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;
|