dimone 0 4 июня, 2016 Опубликовано 4 июня, 2016 · Жалоба -Приветствую, есть проект на "Сях в ИАР-е , в нем плотно используются структуры с "автоопределением" типа: 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 компилятор пропускает лишь объявление\определение, с предупреждением, но при попытке обратиться к члену дает ошибку... Может у кого-то будут идеи как минимальными затратами исправить ситуацию, уж больно не хочется перелопачивать всё ) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 4 июня, 2016 Опубликовано 4 июня, 2016 · Жалоба Уши бы поотрывал этому писателю! Если ты не можешь запомнить, что нумерация бит в байте при ЛЮБЫХ условиях начинается с НУЛЯ, а не с единицы, то пора задуматься о смене профессии... Теперь по теме: Под какой таргет пишете? Какой стандарт языка задаёте компилятору? Какая версия keil? HINT: http://electronix.ru/forum/lofiversion/index.php/t88403.html Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 5 июня, 2016 Опубликовано 5 июня, 2016 · Жалоба Уши бы поотрывал этому писателю! Если ты не можешь запомнить, что нумерация бит в байте при ЛЮБЫХ условиях начинается с НУЛЯ, а не с единицы, то пора задуматься о смене профессии... Простите, а с чего Вы решили, что автор этого не знает или не запомнил? Приведенный код в этом намеков не содержит. Названия полей - так-то может удобнее так (часто и бывает) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 5 июня, 2016 Опубликовано 5 июня, 2016 · Жалоба Какой стандарт языка задаёте компилятору? Не С99 вот и вся "проблема". может удобнее так (часто и бывает) Может еще и типа TRUE equ 0, признаете "удобнее"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 5 июня, 2016 Опубликовано 5 июня, 2016 · Жалоба Может еще и типа TRUE equ 0, признаете "удобнее"? Зачем утрировать? Не совсем тот случай Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimone 0 5 июня, 2016 Опубликовано 5 июня, 2016 · Жалоба Уши бы поотрывал этому писателю! Если ты не можешь запомнить, что нумерация бит в байте при ЛЮБЫХ условиях начинается с НУЛЯ, а не с единицы, то пора задуматься о смене профессии... -спасибо за совет, почти по-Фрейду, особенно если учесть что у меня есть документы радиста и диплом радиоинженера одного из питерских вузов.. Хочу возразить вам, в случаях если битовая нумерация отражает ,например, работу анодных ключей индикатора, то физическая нумерация разрядов может отображатьсяна их битовые эквиваленты ,для удобства и во избежании путаницы.. Извиняюсь что вырвано из контекста, но это не моветон) Опции компилятора: --c99 -c --cpu Cortex-M3 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 5 июня, 2016 Опубликовано 5 июня, 2016 · Жалоба Во-во. B) Кстати, а какую ошибку он выдает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimone 0 5 июня, 2016 Опубликовано 5 июня, 2016 (изменено) · Жалоба при объявлении: warning: #64-D: declaration does not declare anything при доступе: error: #20: identifier "bit_2" is undefined Изменено 5 июня, 2016 пользователем dimone Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DASM 0 5 июня, 2016 Опубликовано 5 июня, 2016 · Жалоба Да, вижу, попробовал. Почитал тут срач https://rsdn.ru/forum/cpp/4809952.flat - охота заморачиваться с анонимностью отпала напрочь. Может ну ее? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimone 0 5 июня, 2016 Опубликовано 5 июня, 2016 · Жалоба ..- охота заморачиваться с анонимностью отпала напрочь. Может ну ее? -И я склоняюсь к этому, точнее уже морально готов править тонну кода, но людям же свойственно пытаться прокатить "на шарика", и вот попытка не пытка.. :laughing: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 5 июня, 2016 Опубликовано 5 июня, 2016 · Жалоба Сделать структуру именованной, а потом заменить одним махом в Notepad++ bit_1 на bits.bit_1. А еще лучше - на Anode. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 5 июня, 2016 Опубликовано 5 июня, 2016 · Жалоба Сделать структуру именованной, а потом при помощи define задать для старого имени из исходников эквивалент имени члена новой структуры. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimone 0 5 июня, 2016 Опубликовано 5 июня, 2016 · Жалоба Сделать структуру именованной, а потом при помощи define задать для старого имени из исходников эквивалент имени члена новой структуры. -cамое простое и логичное решение, в моеи ситуации, как сразу не допер.. Спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
demiurg_spb 0 5 июня, 2016 Опубликовано 5 июня, 2016 · Жалоба Зачем утрировать? Не совсем тот случай Именно тот случай. Либо давай имена в соответствии с исполнительными механизмами на более высоком уровне абстракции, либо не изобретай велосипед вовсе. И диплом радиоинжинера тут совершенно не причём. Есть люди с двумя-тремя дипломами, а программировать не умеют... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 0 6 июня, 2016 Опубликовано 6 июня, 2016 · Жалоба Почитал тут срач https://rsdn.ru/forum/cpp/4809952.flat - охота заморачиваться с анонимностью отпала напрочь. Может ну ее? Никаке срачи читать не собираюсь, поскольку неименованные структуры безмерно полезны. Когда приходится изредка описывать, например, протоколы под убогие компиляторы, то заморочки вылезют немалые, БЕЗ возможности описания таких структур. Хочу возразить вам, в случаях если битовая нумерация отражает ,например, работу анодных ключей индикатора.... ...то нефиг их называть "битами" да и нумеровать их цифрами. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться