Mam C (nie C++) struct że idzie takC tablice struct
typedef struct mystruct{
float a,b;
int x, y;
} mystruct;
Następnie w funkcji Zbieram dane tak:
mystruct List[MAX];
ListNumber = 0;
for(i = 0; i < MAX; i++)
{
if(conditions_meet)
{
List[ListNumber].a = masterlist[i].a;
... itp
ListNumber++;
}
}
potem wysłać tablicę do funkcji
DoStuff(static int max, mystruct array[max]){
Stuff
}
To działa, ale gdy próbuję zrobić to tak ....
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++;
}
}
To powoduje wiele błędów odjazdowe. Dlaczego to się dzieje? edytuj: @ tommieb75 Nie mogę podać zbyt wiele szczegółów, wyniki nie wydają się mieć wzorca. Lista jest używana jako ogólny sposób rysowania elementów na ekranie, a posiadanie funkcji zamiast bezpośredniego ustawienia powoduje dziwne problemy z renderowaniem - i losowe - ale nie generuje żadnych błędów kompilatora. gdb pokazuje, że niektóre liczby całkowite są większe od liczb całkowitych, to jedyny wzorzec, jaki znajduję. masterlist to globalna tablica innej struktury. Dane muszą zostać przekonwertowane na strukturę w tym przykładzie. Brak ostrzeżeń lub błędów kompilatora. Mogę włączyć bardziej wrażliwe ostrzeżenia, ale zawsze dostaję zgłoszenia o ogólnym błędzie, jaki mogę sobie wyobrazić. Mam zamiar wypróbować wybrane rozwiązanie, które powinno wystarczyć. W każdym razie podobne funkcje zwracające structs są używane w moim kodzie i wszystkie działają idealnie, z wyjątkiem tego przypadku z tablicą struktur.
mógłbyś pisać niektóre błędy są uzyskiwanie? – GameFreak
Ktoś odświeżyć moją pamięć: Czy możesz zwrócić structs przez wartość w C? –
dlaczego nie? wskaźniki powinny być szybsze, ale możesz zwrócić wartość. Btw. www.ideone.com i możesz sprawdzić ;-) – nilphilus