zalg 0 22 июня, 2011 Опубликовано 22 июня, 2011 · Жалоба По мере освоения IAR узнал, что типы данных могут отличаться по размеру, в зависимости от компилятора и платформы, и что типы данных с фиксированным размером определены в файле stdint.h. Когда полез в него, то увидел там такую запись, например: /* Fixed size types. These are all optional. */ #ifdef __INT8_T_TYPE__ typedef __INT8_T_TYPE__ int8_t; typedef __UINT8_T_TYPE__ uint8_t; #endif /* __INT8_T_TYPE__ */ На сколько я понимаю, она определяет тип переменной размером 8 бит(со знаком и без знака соответственно), но вот не могу разобраться от куда берется тип __INT8_T_TYPE__. Хотелось бы разобраться, чтобы не оставалось недопонимания. И вообще следует ли пользоваться этим заголовочным файлом, или с таким же успехом можно определять свои типы, например так: typedef unsigned char uint8; // для 8-битных AVR Спасибо заранее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 22 июня, 2011 Опубликовано 22 июня, 2011 · Жалоба ...И вообще следует ли пользоваться этим заголовочным файлом, или с таким же успехом можно определять свои типы, например так: typedef unsigned char uint8; // для 8-битных AVR Спасибо заранее. Я пользуюсь своим по типу как у Вас показано. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 22 июня, 2011 Опубликовано 22 июня, 2011 · Жалоба На сколько я понимаю, она определяет тип переменной размером 8 бит(со знаком и без знака соответственно), но вот не могу разобраться от куда берется тип __INT8_T_TYPE__. Хотелось бы разобраться, чтобы не оставалось недопонимания. Вероятно, это символ, определённый самом компилятором. Как, например, __DATE__. Почему так хитро - непонятно. Ясно, что можно было написать signed char. И вообще следует ли пользоваться этим заголовочным файлом, или с таким же успехом можно определять свои типы, например так: typedef unsigned char uint8; // для 8-битных AVR Это кому как нравится. Лично я стараюсь не изобретать велосипедов, поэтому и использую stdint.h. Но у меня к ним претензия: имена типов могли бы быть и короче. Чего стоит, к примеру, uint_fast16_t? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться