Ошибки в генерации кода Блок Си

Ответить
Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 27
Откуда: Новосибирск

Ошибки в генерации кода Блок Си

#1

Сообщение Слимпер » 05.02.2016{, 17:55}

При разработки Пользовательских блоков с кодом Си встречал несколько проблем:

Первый случай: 

Пользовательский параметр timesend  (равен 300) 

В вставлял код:
if ((millis() - time1) >= timesend || errorstate !=0)

При компиляции получалось:

if ((millis() - time1) >=_168551789_1 300 || errorstate !=0)

И так во многих местах после знака "= "

Решил проблему убрав пробелы после "="

В вставлял код:

if ((millis() - time1) >=timesend || errorstate !=0)
При компиляции получалось:
if ((millis() - time1) >= 300 || errorstate !=0)

Еще нельзя использовать в названии входов и выходов блоков пользователя названия отличающиеся на дополнение с "_"

Например 

text и En_text
При компиляции получится 
En_text_124678817_1_124678817_1

Для обхода Достаточно использовать хотя бы так
 
 text_1 и En_text 

или надёжнее так

text и EnText

Нельзя использовать объявление структуры кодом

typedef struct{
...
...}
test;

Пришлось заменить на такой кодом

struct test{
...

...
};

Возможно не все из перечисленного баг, может так и задумывалось.

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

Ошибки в генерации кода Блок Си

#2

Сообщение support » 06.02.2016{, 16:28}

Слимпер писал(а):Нельзя использовать объявление структуры кодомtypedef struct{
...
...}
test;

Пришлось заменить на такой кодом

struct test{
...

...
};
 Ошибки исправил кроме процитированной. С таким объявлением я пока не справлюсь, но Ваша замена абсолютно корректна. Проконсультировался со специалистами по С
Автор программы FLProg.

Ответить

Вернуться в «Архив (Версия 1.10.3)»