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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Анонимные структуры IAR vs Keil
dimone
сообщение Jun 4 2016, 10:24
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 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
компилятор пропускает лишь объявление\определение, с предупреждением,
но при попытке обратиться к члену дает ошибку...
Может у кого-то будут идеи как минимальными затратами исправить ситуацию, уж больно не хочется перелопачивать всё )
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jun 4 2016, 18:21
Сообщение #2


неотягощённый злом
******

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



Цитата(dimone @ Jun 4 2016, 13:24) *
Уши бы поотрывал этому писателю!
Если ты не можешь запомнить, что нумерация бит в байте при ЛЮБЫХ условиях начинается с НУЛЯ, а не с единицы, то пора задуматься о смене профессии...

Теперь по теме:
Под какой таргет пишете?
Какой стандарт языка задаёте компилятору?
Какая версия keil?

HINT:
http://electronix.ru/forum/lofiversion/index.php/t88403.html


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
DASM
сообщение Jun 5 2016, 01:38
Сообщение #3


Гуру
******

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



Цитата(dimone @ Jun 4 2016, 13:24) *
Уши бы поотрывал этому писателю!
Если ты не можешь запомнить, что нумерация бит в байте при ЛЮБЫХ условиях начинается с НУЛЯ, а не с единицы, то пора задуматься о смене профессии...

Простите, а с чего Вы решили, что автор этого не знает или не запомнил? Приведенный код в этом намеков не содержит. Названия полей - так-то может удобнее так (часто и бывает)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 5 2016, 02:36
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 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
Go to the top of the page
 
+Quote Post
DASM
сообщение Jun 5 2016, 02:46
Сообщение #5


Гуру
******

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



Цитата(zltigo @ Jun 5 2016, 05:36) *
Может еще и типа TRUE equ 0, признаете "удобнее"?

Зачем утрировать? Не совсем тот случай
Go to the top of the page
 
+Quote Post
dimone
сообщение Jun 5 2016, 06:46
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 102
Регистрация: 23-02-09
Пользователь №: 45 242



Цитата(dimone @ Jun 4 2016, 13:24) *
Уши бы поотрывал этому писателю!
Если ты не можешь запомнить, что нумерация бит в байте при ЛЮБЫХ условиях начинается с НУЛЯ, а не с единицы, то пора задуматься о смене профессии...

-спасибо за совет, почти по-Фрейду, особенно если учесть что у меня есть документы радиста и диплом радиоинженера одного из питерских вузов..
Хочу возразить вам, в случаях если битовая нумерация отражает ,например, работу анодных ключей индикатора, то физическая нумерация разрядов может отображатьсяна
их битовые эквиваленты ,для удобства и во избежании путаницы..
Извиняюсь что вырвано из контекста, но это не моветон)

Опции компилятора: --c99 -c --cpu Cortex-M3
Go to the top of the page
 
+Quote Post
DASM
сообщение Jun 5 2016, 06:57
Сообщение #7


Гуру
******

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



Во-во. cool.gif
Кстати, а какую ошибку он выдает?
Go to the top of the page
 
+Quote Post
dimone
сообщение Jun 5 2016, 06:59
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 102
Регистрация: 23-02-09
Пользователь №: 45 242




при объявлении:
warning: #64-D: declaration does not declare anything
при доступе:
error: #20: identifier "bit_2" is undefined

Сообщение отредактировал dimone - Jun 5 2016, 07:02
Go to the top of the page
 
+Quote Post
DASM
сообщение Jun 5 2016, 07:09
Сообщение #9


Гуру
******

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



Да, вижу, попробовал.
Почитал тут срач https://rsdn.ru/forum/cpp/4809952.flat - охота заморачиваться с анонимностью отпала напрочь. Может ну ее?
Go to the top of the page
 
+Quote Post
dimone
сообщение Jun 5 2016, 07:24
Сообщение #10


Частый гость
**

Группа: Участник
Сообщений: 102
Регистрация: 23-02-09
Пользователь №: 45 242



Цитата(DASM @ Jun 5 2016, 10:09) *
..- охота заморачиваться с анонимностью отпала напрочь. Может ну ее?

-И я склоняюсь к этому, точнее уже морально готов править тонну кода,
но людям же свойственно пытаться прокатить "на шарика", и вот попытка не пытка.. laughing.gif
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jun 5 2016, 07:49
Сообщение #11


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Сделать структуру именованной, а потом заменить одним махом в Notepad++ bit_1 на bits.bit_1. А еще лучше - на Anode.
Go to the top of the page
 
+Quote Post
jcxz
сообщение Jun 5 2016, 17:23
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Сделать структуру именованной, а потом при помощи define задать для старого имени из исходников эквивалент имени члена новой структуры.
Go to the top of the page
 
+Quote Post
dimone
сообщение Jun 5 2016, 18:37
Сообщение #13


Частый гость
**

Группа: Участник
Сообщений: 102
Регистрация: 23-02-09
Пользователь №: 45 242



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

-cамое простое и логичное решение, в моеи ситуации, как сразу не допер..
Спасибо!
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Jun 5 2016, 20:14
Сообщение #14


неотягощённый злом
******

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



Цитата(DASM @ Jun 5 2016, 05:46) *
Зачем утрировать? Не совсем тот случай

Именно тот случай.
Либо давай имена в соответствии с исполнительными механизмами на более высоком уровне абстракции, либо не изобретай велосипед вовсе. И диплом радиоинжинера тут совершенно не причём.
Есть люди с двумя-тремя дипломами, а программировать не умеют...


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jun 6 2016, 15:38
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 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
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 Текстовая версия Сейчас: 18th July 2025 - 14:27
Рейтинг@Mail.ru


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