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

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Не нашел .h файл в IAR с описанием uint8_t
zltigo
сообщение Oct 4 2007, 11:27
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(prottoss @ Oct 4 2007, 13:29) *
он длинно пишется :-) - unsinged short int - и я переживаю за свою мультимедийную клавиатуру

Тогда int в этом явно лишнее - просто unsinged short хотя лично я предпочитаю "новый" тип ushort. Типы вроде uint16_t достаточно непривычны по сравнению с классическими, но типы вроде uint_least16_t, uint_fast16_t следует признать очень полезными.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
dxp
сообщение Oct 4 2007, 11:33
Сообщение #17


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(rezident @ Oct 4 2007, 17:53) *
char>=short>=int>=long

Чуть-чуть наоборот. smile.gif


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 4 2007, 11:35
Сообщение #18


Гуру
******

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



Цитата(rezident @ Oct 4 2007, 19:23) *
В Recommended C Style and Coding Standards см. на странице 17(18).
Это совсем не аргумент;-) Я посмеялся, когда прочитал и посмотрел таблицу. А почему в ней нет Марк2? В таблице динозавры. Документ датирован 1995 годом. Я же имел ввиду современные платформы. Так вы мне ответите?



Вот таблица
Эскизы прикрепленных изображений
Прикрепленное изображение
 


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


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



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

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

TMS320F28xx. 16 бит.

Дело не том, старые или новые платформы. Вот TMS вполне новый. Дело в принципе. Завтра может появиться еще платформа, у которой типы будут иметь "непривычную" разрядность. Стандарт регламентирует правила, все обязаны их соблюдать, для того правила и придуманы. Если кто-то их не соблюдает, он сам себе злобный буратина.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
rezident
сообщение Oct 4 2007, 11:51
Сообщение #20


Гуру
******

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



Цитата(dxp @ Oct 4 2007, 17:33) *
Чуть-чуть наоборот. smile.gif

ну да, наоборот 01.gif
char<=short<=int<=long.

Цитата(prottoss @ Oct 4 2007, 17:35) *
Это совсем не аргумент;-) Я посмеялся, когда прочитал и посмотрел таблицу. А почему в ней нет Марк2? В таблице динозавры. Документ датирован 1995 годом. Я же имел ввиду современные платформы. Так вы мне ответите?

Отвечу. Читайте внимательно стандарт ANSI C.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 4 2007, 12:03
Сообщение #21


Гуру
******

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



Цитата(dxp @ Oct 4 2007, 19:36) *
TMS320F28xx. 16 бит.
А что за компилятор?


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


Гуру
******

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



Цитата(prottoss @ Oct 4 2007, 18:03) *
А что за компилятор?

Code Composer Studio вестимо. Вот хидер limits.h из его комплекта. Причем еще обращаю ваше внимание на аннотацию к User's Guide этого CCS.
Цитата.
Цитата
The TMS320C28x™ C/C++ compiler accepts C and C++ code conforming to the International Organization for Standardization (ISO) standards for these languages, and produces assembly language source code for the TMS320C28x device. The compiler supports the 1989 version of the C language.

This user’s guide discusses the characteristics of the C/C++ compiler. It assumes that you already know how to write C/C++ programs. The C Programming Language (second edition), by Brian W. Kernighan and Dennis M. Ritchie, describes C based on the ISO C standard. You can use the Kernighan and Ritchie (hereafter referred to as K&R) book as a supplement to this manual. References to K&R C (as opposed to ISO C) in this manual refer to the C language as defined in first edition of Kernighan and Ritchie’s The C Programming Language.

То бишь он в полном соответствии со стандартом разработан wink.gif
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 4 2007, 12:57
Сообщение #23


Гуру
******

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



Хорошо, признаю, был не прав 05.gif



Но мне так и не понятно, отчего

Код
#define unsigned short int uint16_t
хуже
Код
typedef unsigned short int uint16_t
Объясните страждущему, плиз.


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


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(prottoss @ Oct 4 2007, 15:57) *
Но мне так и не понятно, отчего
Код
#define unsigned short int uint16_t
хуже
Код
typedef unsigned short int uint16_t
Объясните страждущему, плиз.

Да ничем не хуже. Компилятор в любом случае будет контролировать исходный тип.
Просто так не элегантно.
Дело в том, что некоторые IDE позволяют делать браузинг обьектов, типов, макросов и т. д. и uintХХ_t будет отнесён ими не к типам, как по логике, а к макросам.
Только и всего, на мой взгляд.
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 4 2007, 13:09
Сообщение #25


Гуру
******

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



Цитата(IgorKossak @ Oct 4 2007, 21:02) *
Да ничем не хуже.
Я тоже так подумал в начале спора, но мне почему то дали по шее smile.gif


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


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(prottoss @ Oct 4 2007, 19:57) *
Но мне так и не понятно, отчего

Код
#define unsigned short int uint16_t
хуже
Код
typedef unsigned short int uint16_t
Объясните страждущему, плиз.

В данном случае, видимо, большой разницы нет. Но вот попробуйте с помощью дефайна определить тип указателя на функцию? Про другие недостатки уже сказали. Лучше пользоваться теми средствами, которые явно предназначены. А использование макросов препроцессора свести к минимуму.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 4 2007, 13:30
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(prottoss @ Oct 4 2007, 16:09) *
Я тоже так подумал в начале спора, но мне почему то дали по шее smile.gif

Правильно дали smile.gif
Для начала не:
Цитата
#define unsigned short int uint16_t

а
Код
#define uint16_t unsigned short int

А по существу #define и typedef по разному обрабатываются - один препроцессором, а второй компилятором. Компилятор (или дополнительные утилиты типа lint) могут дополнительно заниматься котролем типов, а препроцессор - нет. Кроме того попробуйте ответить на вопрос есть-ли разница между, например, типами переменных bb и dd:
str_t aa, bb;
str_d cc, dd;
если:
typedef char *str_t; // Правильный подход к делу
#define str_d char * // Дурной стиль без всякой на то надобности да и еще с побочными эффектами


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
prottoss
сообщение Oct 4 2007, 13:40
Сообщение #28


Гуру
******

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



Цитата(dxp @ Oct 4 2007, 21:20) *
В данном случае, видимо, большой разницы нет. Но вот попробуйте с помощью дефайна определить тип указателя на функцию? Про другие недостатки уже сказали. Лучше пользоваться теми средствами, которые явно предназначены. А использование макросов препроцессора свести к минимуму.
Я же не говорил, что #define - панацея от всех бед. Я просто показал, как можно сделать, то что просил создатель ветки... А мне начали втыкивать про разрядность типов 07.gif

Цитата(zltigo @ Oct 4 2007, 21:30) *
Кроме того попробуйте ответить на вопрос есть-ли разница между, например, типами переменных bb и dd:
str_t aa, bb;
str_d cc, dd;
если:
typedef char *str_t; // Правильный подход к делу
#define str_d char * // Дурной стиль без всякой на то надобности да и еще с побочными эффектами
Наверное есть, они же в итоге разных типов - bb типа str_t, а dd типа char *


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


Гуру
******

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



Цитата(prottoss @ Oct 4 2007, 16:40) *
а dd типа char *
char. Сюрприз.


--------------------
На любой вопрос даю любой ответ
"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, 14:18
Сообщение #30


Гуру
******

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



Цитата(Сергей Борщ @ Oct 4 2007, 22:10) *
char. Сюрприз.
Но я не предлагал через #define объявлять указатели. Это ваши загадки, на которые вы сами знаете ответы.


--------------------
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:49
Рейтинг@Mail.ru


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