У меня есть структура C (не C ++), которая выглядит следующим образом
typedef struct mystruct{
float a,b;
int x, y;
} mystruct;
Затем в функции я собираю данные следующим образом:
mystruct List[MAX];
ListNumber = 0;
for(i = 0; i < MAX; i++)
{
if(conditions_meet)
{
List[ListNumber].a = masterlist[i].a;
... и т.д.
ListNumber++;
}
}
затем я отправляю массив в функцию
DoStuff(static int max, mystruct array[max]){
Stuff
}
Это работает, но когда я пытаюсь сделать это так ....
mystruct setter(int i)
{
mystruct TEMP;
TEMP.a = masterlist[i].a;
//......etc
return TEMP;
}
mystruct List[MAX];
ListNumber = 0;
for(i = 0; i < MAX; i++)
{
if(conditions_meet)
{
List[ListNumber] = setter(i);
ListNumber++;
}
}
Этовызывает много прикольных ошибок.Почему это происходит?edit: @ tommieb75 Я не могу дать много подробностей, результаты, кажется, не имеют закономерности.Список используется в качестве обобщенного способа отрисовки материала на экране, а наличие функции вместо прямой установки создает странные проблемы при рендеринге - и случайных -, но не вызывает ошибок компилятора вообще.GDB показывает, что некоторые целые числа больше целого, это единственный шаблон, который я нахожу.masterlist - это глобальный массив другой структуры.Данные должны быть преобразованы в структуру в этом примере.Никаких предупреждений или ошибок компилятора.Я могу включить более чувствительные предупреждения, но я всегда получаю сообщение о любой общей ошибке, которую могу думать.Я собираюсь попробовать выбранное решение, которого должно хватить.В любом случае, в моем коде используются похожие функции, возвращающие структуры, и все они работают отлично, за исключением этого случая с массивом структур.