реклама на сайте
подробности

 
 
> Не нашел .h файл в IAR с описанием uint8_t
_Алекс
сообщение Oct 3 2007, 19:55
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 14-09-06
Пользователь №: 20 377



Похоже, в IAR нет что то типа inttypes.h, может есть у кого заголовочный файл с описанием типов uint8_t, uint16_t и т.д. для IAR как в AVRGCC например.
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 14)
Сергей Борщ
сообщение Oct 3 2007, 20:07
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(_Алекс @ Oct 3 2007, 22:55) *
Похоже, в IAR нет что то типа inttypes.h
Нету. В IAR есть стандартный stdint.h Если речь идет о компиляторе для AVR, то надо включить библиотеку DLIB.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 3 2007, 21:11
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Можно и самому создать хидер с типами, в чем проблема?
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 4 2007, 01:20
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(_Алекс @ Oct 4 2007, 03:55) *
Похоже, в IAR нет что то типа inttypes.h, может есть у кого заголовочный файл с описанием типов uint8_t, uint16_t и т.д. для IAR как в AVRGCC например.


Код
#define uint8_t unsigned char

#define uint16_t unsigned int
и т.д


--------------------
Go to the top of the page
 
+Quote Post
haker_fox
сообщение Oct 4 2007, 03:00
Сообщение #5


Познающий...
******

Группа: Свой
Сообщений: 2 963
Регистрация: 1-09-05
Из: г. Иркутск
Пользователь №: 8 125



Цитата(prottoss @ Oct 4 2007, 10:20) *
Код
#define uint8_t unsigned char

#define uint16_t unsigned int
и т.д

Наверно правильнее все таки так:
typedef unsigned char uint8_t;
typedef unsinged short int uint16_t;
и т.д.
Таким образом мы вводим новые типы, которые поддаются контролю компилятора.


--------------------
Выбор.
Go to the top of the page
 
+Quote Post
_Алекс
сообщение Oct 4 2007, 04:14
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 252
Регистрация: 14-09-06
Пользователь №: 20 377



Мне кажется лучше пользоваться готовыми встроенными средствами компилятора, если подходят, если нет, писать самому. Использую IAR компилятор для AVR. Похоже надо писать самому.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 4 2007, 10:15
Сообщение #7


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(_Алекс @ Oct 4 2007, 07:14) *
Использую IAR компилятор для AVR. Похоже надо писать самому.
Я же вам ответил - эти типы описаны в файле stdint.h. Этот файл в IAR есть. И такое название он имеет в соответствии со стандартом ISO/IEC 9899:1999. Если у вас компилятор для AVR, то этот файл лежит в папке inc/dlib


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 4 2007, 10:29
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(haker_fox @ Oct 4 2007, 11:00) *
Наверно правильнее все таки так:
typedef unsigned char uint8_t;
typedef unsinged short int uint16_t;
и т.д.
Таким образом мы вводим новые типы, которые поддаются контролю компилятора.
А зачем мне вводить новый тип, если меня вполне устраивает старый, кроме того, что он длинно пишется :-) - unsinged short int - и я переживаю за свою мультимедийную клавиатуру


--------------------
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Oct 4 2007, 10:37
Сообщение #9


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(prottoss @ Oct 4 2007, 13:29) *
А зачем мне вводить новый тип, если меня вполне устраивает старый, кроме того, что он длинно пишется :-)
Видимо для того, чтобы переменная имела 16 бит и на ARM и на AVR.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 4 2007, 10:43
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(Сергей Борщ @ Oct 4 2007, 18:37) *
Видимо для того, чтобы переменная имела 16 бит и на ARM и на AVR.
Вы считаете что тип unsinged short int будет иметь разное количество бит для AVR и ARM?
Код
#define UINT16 unsinged short int
...
UINT16 var;

Переменная var для двух вышеназванных платформ будет разной длины?


--------------------
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 4 2007, 10:53
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(prottoss @ Oct 4 2007, 16:43) *
Вы считаете что тип unsinged short int будет иметь разное количество бит для AVR и

В стандарте Си нет жестко заданной разрядности типов данных. Есть только ограничения типа char>=short>=int>=long. Ограничения на разрядность данных описаны в хидере limits.h в виде INT_MIN, INT_MAX, LONG_MIN, LONG_MAX и т.п. Так что для разных CPU/MCU разрядность схожих типов данных может быть тоже различной.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 4 2007, 11:05
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(rezident @ Oct 4 2007, 18:53) *
В стандарте Си нет жестко заданной разрядности типов данных. Есть только ограничения типа char>=short>=int>=long. Ограничения на разрядность данных описаны в хидере limits.h в виде INT_MIN, INT_MAX, LONG_MIN, LONG_MAX и т.п. Так что для разных CPU/MCU разрядность схожих типов данных может быть тоже различной.
Тогда назовите хотя бы одну платформу или хотя бы один современный компилятор, в которой

char не равно 8 бит

short int не равно 16 бит

long int не равно 32 бит

long long int не равно 64 бит



"просто" int я в учет не беру, потому что тип этот на самом деле с "плавающей" разрядностью от платформы к платформе


--------------------
Go to the top of the page
 
+Quote Post
alexander55
сообщение Oct 4 2007, 11:17
Сообщение #13


Бывалый
*****

Группа: Свой
Сообщений: 1 584
Регистрация: 7-08-07
Пользователь №: 29 615



Стандарт ANSI/ISO C Standart
char 8
unsigned char 8
signed char 8
int 16 or32
unsigned int 16 or 32
signed int 16 or 32
short int 16
unsigned short int 16
signed short int 16

long int 32
signed long int 32
unsigned long int 32
float 32
double 64
long double 80

Цитата(prottoss @ Oct 4 2007, 15:05) *
Тогда назовите хотя бы одну платформу или хотя бы один современный компилятор, в которой

char не равно 8 бит

short int не равно 16 бит

long int не равно 32 бит

long long int не равно 64 бит



"просто" int я в учет не беру, потому что тип этот на самом деле с "плавающей" разрядностью от платформы к платформе

Не спорьте, не заводитесь.

Сообщение отредактировал alexander55 - Oct 4 2007, 11:14
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 4 2007, 11:23
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Цитата(alexander55 @ Oct 4 2007, 19:17) *
Не спорьте, не заводитесь.
Хех...я и не завожусь:-) Просто Вы привели то же самое, что сказал я постом выше - для основных типов разрядность во всех платформах и компиляторах ОДИНАКОВАЯ. А еще постом выше rezident сказал, что эти типы для разных платформ будут разные.


--------------------
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 4 2007, 11:23
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(prottoss @ Oct 4 2007, 17:05) *
Тогда назовите хотя бы одну платформу или хотя бы один современный компилятор, в которой

char не равно 8 бит

short int не равно 16 бит

long int не равно 32 бит

long long int не равно 64 бит

В Recommended C Style and Coding Standards см. на странице 17(18).
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 26th July 2025 - 01:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.0154 секунд с 7
ELECTRONIX ©2004-2016