Двойное декларирование

В данный форум Вы можете заносить найденные Вами ошибки.При добавления ошибки пожалуйста приложите файлик error.log который находится в папке с установленной программой
Ответить
Аватара пользователя
RedSky
Лейтенант
Сообщения: 574
Зарегистрирован: 19.12.2016{, 20:07}
Репутация: 72
Откуда: Днепропетровск
Имя: Алексей

Двойное декларирование

#1

Сообщение RedSky » 20.02.2017{, 17:41}

При компиляции ошибка:   pr48.ino:313:5: error: redeclaration of 'int _tempVariable_int'
                                         pr48.ino:245:5: error: 'int _tempVariable_int' previously declared here

Появляется при использовании стека или детектора изменения числа в больших проектах.
Если убрать одну строку с int _tempVariable_int работает нормально.
Вложения
0568191.zip
(126.63 КБ) 44 скачивания

Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01.05.2016{, 01:04}
Репутация: 38
Откуда: Коломна
Имя: Станислав
Контактная информация:

Двойное декларирование

#2

Сообщение Boroda » 20.02.2017{, 22:22}

Ну тут все предельно ясно!
Пользователь rw6cm видимо использовал в своем Пользовательском Блоке (ПБ) T=00^00 переменную, которая используется в стандартных блоках FLProg. А именно: _tempVariable_int;

Вот и возникает конфликт ПБ блока и массива!

А объясняется такой конфликт просто: переменные ПБ, объявленные в секции Loop(), не имеют уникального идентификатора. Если бы он эту переменную объявил в секции Declare, тогда FLProg присвоила бы ей уникальный идентификатор.

Поставьте два блока T=00^00 и получите еще кучу ошибок:

int _tempVariable_int;
bool  _tmp2 = _changeNumber2_Out_938015_1;
............
int _tempVariable_int;
bool  _tmp2 = _changeNumber2_Out_938015_3;

Вывод: переменные ПБ нужно объявлять только в секции Declare!!!
Вложения
__00_00__-CODE-.ubi
(25.73 КБ) 49 скачиваний
Последний раз редактировалось Boroda 20.02.2017{, 22:24}, всего редактировалось 1 раз.

Аватара пользователя
support
Супермодератор
Сообщения: 1900
Зарегистрирован: 03.01.2018{, 11:45}
Репутация: 789
Откуда: Астрахань
Имя: Сергей
Контактная информация:

Двойное декларирование

#3

Сообщение support » 21.02.2017{, 03:55}

И второй вопрос, у Вас какая версия программы? такая ошибка наблюдалась в старых версиях. Я попробовал открыть проект в версии 2.3.0 (самая ранняя из установленных у меня) и никаких проблем в при компиляции не возникло. Хотя есть предупреждение что осталось мало свободной памяти, и возможна нестабильная работа.
Автор программы FLProg.

Аватара пользователя
Boroda
Капитан
Сообщения: 836
Зарегистрирован: 01.05.2016{, 01:04}
Репутация: 38
Откуда: Коломна
Имя: Станислав
Контактная информация:

Двойное декларирование

#4

Сообщение Boroda » 21.02.2017{, 08:09}

support, я в 2.3.1 проверял. В прикрепленной программе в блоке T=00^00 переменная объявлена в секции Loop() (не имеет уникального идентификатора) и такая же переменная используется в стандартном массиве.

П.С.
RedSky писал(а):Появляется при использовании стека или детектора изменения числа в больших проектах.
Это работает нормально.

Аватара пользователя
rw6cm
Полковник
Сообщения: 2283
Зарегистрирован: 06.09.2015{, 20:25}
Репутация: 334
Имя: Владимир

Двойное декларирование

#5

Сообщение rw6cm » 21.02.2017{, 09:19}

Boroda писал(а):Пользователь rw6cm видимо использовал в своем Пользовательском Блоке (ПБ) T=00^00 переменную, которая используется в стандартных блоках FLProg. А именно: _tempVariable_int;
Прозевал этот момент, спасибо за подсказку.
RedSky, замените блок на этот.
Вечером в блоках пользователей обновлю.
Вложения
00_00-CODE-.ubi
(26.57 КБ) 56 скачиваний
Win10-64, FLProg (portable)

Аватара пользователя
RedSky
Лейтенант
Сообщения: 574
Зарегистрирован: 19.12.2016{, 20:07}
Репутация: 72
Откуда: Днепропетровск
Имя: Алексей

Двойное декларирование

#6

Сообщение RedSky » 21.02.2017{, 10:44}

Спасибо, проверил - работает.
Версия последняя. IDE 1.6.3. В 1.8 у меня не работает кириллица на 5110.

tok17
Рядовой
Сообщения: 23
Зарегистрирован: 30.04.2016{, 09:46}
Репутация: 0
Откуда: Южно-Сахалинск
Имя: Александр
Контактная информация:

Двойное декларирование

#7

Сообщение tok17 » 22.02.2017{, 15:59}

support писал(а):такая ошибка наблюдалась в старых версиях. Я попробовал открыть проект в версии 2.3.0 (самая ранняя из установленных у меня) и никаких проблем в при компиляции не возникло. Хотя есть предупреждение что осталось мало свободной памяти, и возможна нестабильная работа.
 
У меня так же происходило. Первый раз не разобрался в чем причина, перенес все блоки в новый проект, ошибка с дублированием исчезла.
Сейчас возникла на Меге. Свободной памяти много, версия 2,3,1
Вычищаю лишние строки в ручную:
1. Servo _SM1;
OneWire  _ow10(10);
OneWire  _ow9(9);
OneWire  _ow10(10);
OneWire  _ow9(9);

2. переменная перестала дублироваться... не понятно...

Аватара пользователя
RedSky
Лейтенант
Сообщения: 574
Зарегистрирован: 19.12.2016{, 20:07}
Репутация: 72
Откуда: Днепропетровск
Имя: Алексей

Двойное декларирование

#8

Сообщение RedSky » 23.02.2017{, 10:39}

Такое происходит при копировании и вставке из другого проекта. Нужно удалить и заново создать блоки поиска и опроса DS18B20.

Ответить

Вернуться в «Новые»