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

 
 
> Ощибка PE147, union и ATMega16
IF_P
сообщение Jun 28 2017, 06:46
Сообщение #1


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

Группа: Участник
Сообщений: 136
Регистрация: 2-01-06
Пользователь №: 12 772



Вылетает ошибка "ERROR[PE147]...". В программе с ATMega128 все нормально работает. А здесь стоит ATMega16. Что ему не нравится?
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Сергей Борщ
сообщение Jun 29 2017, 20:57
Сообщение #2


Гуру
******

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



Вы объявили в заголовочном файле переменную безымянного типа. Полагаю, adc_16_old.h был включен более чем в один файл исходников, а adc_union.h вы включили только в один. Если вы включите свой adc_union.h более чем в один файл исходиков - должны получить такую же фигню. В заголовочном файле должны определяться типы, а не переменные. Переменные в заголовочных файлах только объявляются. Вот если бы вы в заголовочном файле написали
CODE
typedef union
{
....
} data_modbus_in_type;
extern data_modbus_in_type  Data_ModBus_IN;

а в каком-то одном из исходников написали (уже без extern!)
CODE
data_modbus_in_type  Data_ModBus_IN;

ошибки бы не было.

Еще почитайте про защиту от повторного включения заголовочных файлов, у вас ее нет.


--------------------
На любой вопрос даю любой ответ
"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



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 01:47
Рейтинг@Mail.ru


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