gcc: заметки по использованию |
![]() |
Добавил(а) microsin |
Свободный компилятор gcc на платформе Windows входит в состав пакета MinGW. Здесь я решил записать все интересное, с чем довелось столкнуться. 1. Тип int является 32-разрядным (4 байта), short - 16-разрядным (2 байта). 2. Порядок байт в слове - сначала идет младший байт, потом старший. Точно так же, как и у AVR gcc. 3. По умолчанию в структурах включено выравнивание переменных структуры на 2 байта. При этом в блоках памяти получаются "дырки", которые могут доставить неудобство в смысле несовместимости с платформами, где выравнивание отсутствует. Чтобы отключить выравнивание, нужно применить ключевое слово __attribute__ для переменных, размер типа которых больше байта, например: typedef struct { uchar AA; //размер переменной 1 байт uint16_t LightLevelOn __attribute__ ((packed)); //размер 2 байта, отключаем выравнивание uint16_t LightLevelOff __attribute__ ((packed)); //2 байта, отключаем выравнивание uchar IntLight; //1 байт uchar MotionDetect; //1 байт uchar LightTime; //1 байт uchar RiseStep; //1 байт uchar FallStep; //1 байт uchar AdcGain; //1 байт uint16_t CRC __attribute__ ((packed)); //2 байта, отключаем выравнивание }tParams; |