Проблема макросов в классах.

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Pink-Pank
Опытный кот
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США
Контактная информация:

Re: Проблема макросов в классах.

Сообщение Pink-Pank »

В том-то и дело, что в бубен я уже настучался... Затыкается именно при наличии операции приведения типов..
В IAR AVR тоже прокатило.
Где-то в студии косяк.. Надо нормальным софтом пользоваться, хоть и ломанным. ;-)
Всем спасибо за участие.
Fucking static initialization order fiasco
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Re: Проблема макросов в классах.

Сообщение BCluster »

Такая ошибка препроцессора встречается вообще, но тут неясно.
Обычно такое происходит в конструкциях типа

Код: Выделить всё

#define SIZE sizeof(int)

...

#if  ( SIZE == 4 )
...
#endif


тут все понятно - директива #if выполняется на этапе препроцессинга, а sizeof() это функция, поэтому до компиляции данная конструкция не может быть выполнена никак.
В вашем случае могу только предположить, что некая оптимизация странно себя ведёт.
Аватара пользователя
Pink-Pank
Опытный кот
Сообщения: 721
Зарегистрирован: Ср июн 11, 2014 09:43:13
Откуда: США
Контактная информация:

Re: Проблема макросов в классах.

Сообщение Pink-Pank »

Стоп-стоп-стоп... Брррр!
Разве sizeof() функция? Не встроенное средство компилятора?
Fucking static initialization order fiasco
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Re: Проблема макросов в классах.

Сообщение BCluster »

Вообще sizeof() унарный оператор, но все равно в #if его использовать нельзя
Аватара пользователя
Siarzhuk
Потрогал лапой паяльник
Сообщения: 353
Зарегистрирован: Вс янв 19, 2014 22:41:55

Re: Проблема макросов в классах.

Сообщение Siarzhuk »

Pink-Pank писал(а):Надо нормальным софтом пользоваться, хоть и ломанным. ;-)


Это точно - вот сгенерил пустышку проект в Atmel Studio 6 (Version: 6.2.1153 - ) закинул туда ваши классы - всё собралось без проблем.

Кстати при включении PReprocessor only (-E) выхлоп препроцессора идёт в соответствующий *.o - загляните обязательно при случае, очень интересно.

Pink-Pank писал(а):Всем спасибо за участие.


Да не за что. ;-)
Одновременным нажатием LIGHT и POWER, РП Sangean ATS-909X (ver 1.29) превращается в ATS-909XR! ;-)
Ответить

Вернуться в «AVR»