PDA

Просмотр полной версии : Функции



mettled
12.02.2008, 15:20
Проблемма в следующем.
В своей программе я использую функции, выход этой функции структура(ее ввел потому что нужно что бы функция выдавала больше чем одно значение).
далее по программе я обращаюсь непосредственно к выходам функции, а не присваеваю выход функции переменной.
(например : _ImpVar_135_78.Holod ). У меня данная функция используется около 15 раз за программу. выходы этой функции я использую как входы в другой функциональный блок. и вот на 6-8 применении функции мне выдает ошибку (указывает на блок в котором я использую входы функции , блок UPR_vent), что типы несовместимы. хотя все они типа BOOL. Для ясности посмотрите картинку. На ней показана и ошибка.

Kirill
12.02.2008, 15:27
Проблемма в следующем.
В своей программе я использую функции, выход этой функции структура(ее ввел потому что нужно что бы функция выдавала больше чем одно значение).
далее по программе я обращаюсь непосредственно к выходам функции, а не присваеваю выход функции переменной.
(например : _ImpVar_135_78.Holod ). У меня данная функция используется около 15 раз за программу. выходы этой функции я использую как входы в другой функциональный блок. и вот на 6-8 применении функции мне выдает ошибку (указывает на блок в котором я использую входы функции , блок UPR_vent), что типы несовместимы. хотя все они типа BOOL. Для ясности посмотрите картинку. На ней показана и ошибка.

К сожалению, картинка никакой ясности не дает. Лучше проект.

Игорь Петров
12.02.2008, 15:58
:confused: Это странно. Так работать вообще не должно. По определению функция не имеет внутренней память. Возврат значения обычно идет через регистры процессора либо через некую временную память. В любом случае данная память после возврата из функции может быть занята под нечто другое. Надо либо копировать возврат в другую структуру, либо переделать эту функцию в программу.

mettled
12.02.2008, 16:05
работает все номрально. самое интересно что у меня в программе 15 таких функций используется, а запоролось когда я ее использую 5, 6, 7.
Ошибка исчезла когда выходам функций прислоил переменные, и использовать начал их.
Еще вопрос : _ImpVar_106_3 - что это такое и как это формируется ?
А то использую вслепую(посмотрел что работает и использую :-) ), нигде об этом ничего не написано.

Kirill - емэйл оставьте, счас сброшу проект.

Kirill
13.02.2008, 10:16
Kirill - емэйл оставьте, счас сброшу проект.

kirill собак owen.ru