|
Анонимные структуры IAR vs Keil |
|
|
|
Jun 4 2016, 10:24
|
Частый гость
 
Группа: Участник
Сообщений: 102
Регистрация: 23-02-09
Пользователь №: 45 242

|
-Приветствую, есть проект на "Сях в ИАР-е , в нем плотно используются структуры с "автоопределением" типа: Код static union {struct { сhar bit_1 : 1; char bit_2 : 1; char bit_3 : 1; char bit_4 : 1; char bit_5 : 1; char bit_6 : 1; char bit_7 : 1; char bit_8 : 1; } ; char byte; }; И с использованием членов как: bit_2 =1; или byte=5;Возникла необходимость перетянуть прогу на Кеил, и тут наткнулся на неприятную вещь, как невозможность использовать вышеуказанное непосредственно , при попытке использовать команду препроцессора #pragma anon_unions компилятор пропускает лишь объявление\определение, с предупреждением, но при попытке обратиться к члену дает ошибку... Может у кого-то будут идеи как минимальными затратами исправить ситуацию, уж больно не хочется перелопачивать всё )
|
|
|
|
|
Jun 4 2016, 18:21
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Цитата(dimone @ Jun 4 2016, 13:24)  Уши бы поотрывал этому писателю! Если ты не можешь запомнить, что нумерация бит в байте при ЛЮБЫХ условиях начинается с НУЛЯ, а не с единицы, то пора задуматься о смене профессии... Теперь по теме: Под какой таргет пишете? Какой стандарт языка задаёте компилятору? Какая версия keil? HINT: http://electronix.ru/forum/lofiversion/index.php/t88403.html
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Jun 5 2016, 02:36
|

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

|
QUOTE (demiurg_spb @ Jun 4 2016, 21:21)  Какой стандарт языка задаёте компилятору? Не С99 вот и вся "проблема". QUOTE (DASM @ Jun 5 2016, 04:38)  может удобнее так (часто и бывает) Может еще и типа TRUE equ 0, признаете "удобнее"?
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jun 5 2016, 06:46
|
Частый гость
 
Группа: Участник
Сообщений: 102
Регистрация: 23-02-09
Пользователь №: 45 242

|
Цитата(dimone @ Jun 4 2016, 13:24)  Уши бы поотрывал этому писателю! Если ты не можешь запомнить, что нумерация бит в байте при ЛЮБЫХ условиях начинается с НУЛЯ, а не с единицы, то пора задуматься о смене профессии... -спасибо за совет, почти по-Фрейду, особенно если учесть что у меня есть документы радиста и диплом радиоинженера одного из питерских вузов.. Хочу возразить вам, в случаях если битовая нумерация отражает ,например, работу анодных ключей индикатора, то физическая нумерация разрядов может отображатьсяна их битовые эквиваленты ,для удобства и во избежании путаницы.. Извиняюсь что вырвано из контекста, но это не моветон) Опции компилятора: --c99 -c --cpu Cortex-M3
|
|
|
|
|
Jun 5 2016, 07:24
|
Частый гость
 
Группа: Участник
Сообщений: 102
Регистрация: 23-02-09
Пользователь №: 45 242

|
Цитата(DASM @ Jun 5 2016, 10:09)  ..- охота заморачиваться с анонимностью отпала напрочь. Может ну ее? -И я склоняюсь к этому, точнее уже морально готов править тонну кода, но людям же свойственно пытаться прокатить "на шарика", и вот попытка не пытка..
|
|
|
|
|
Jun 5 2016, 18:37
|
Частый гость
 
Группа: Участник
Сообщений: 102
Регистрация: 23-02-09
Пользователь №: 45 242

|
Цитата(jcxz @ Jun 5 2016, 20:23)  Сделать структуру именованной, а потом при помощи define задать для старого имени из исходников эквивалент имени члена новой структуры. -cамое простое и логичное решение, в моеи ситуации, как сразу не допер.. Спасибо!
|
|
|
|
|
Jun 5 2016, 20:14
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Цитата(DASM @ Jun 5 2016, 05:46)  Зачем утрировать? Не совсем тот случай Именно тот случай. Либо давай имена в соответствии с исполнительными механизмами на более высоком уровне абстракции, либо не изобретай велосипед вовсе. И диплом радиоинжинера тут совершенно не причём. Есть люди с двумя-тремя дипломами, а программировать не умеют...
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Jun 6 2016, 15:38
|

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

|
QUOTE (DASM @ Jun 5 2016, 10:09)  Почитал тут срач https://rsdn.ru/forum/cpp/4809952.flat - охота заморачиваться с анонимностью отпала напрочь. Может ну ее? Никаке срачи читать не собираюсь, поскольку неименованные структуры безмерно полезны. Когда приходится изредка описывать, например, протоколы под убогие компиляторы, то заморочки вылезют немалые, БЕЗ возможности описания таких структур. QUOTE (dimone @ Jun 5 2016, 09:46)  Хочу возразить вам, в случаях если битовая нумерация отражает ,например, работу анодных ключей индикатора.... ...то нефиг их называть "битами" да и нумеровать их цифрами.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|