Ho un C (non C++) struct che va come questoC array struct
typedef struct mystruct{
float a,b;
int x, y;
} mystruct;
Poi in una funzione che raccogliere i dati in questo modo:
mystruct List[MAX];
ListNumber = 0;
for(i = 0; i < MAX; i++)
{
if(conditions_meet)
{
List[ListNumber].a = masterlist[i].a;
... ecc
ListNumber++;
}
}
quindi invio l'array a una funzione
DoStuff(static int max, mystruct array[max]){
Stuff
}
Questo funziona, ma quando provo a fare in questo modo ....
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++;
}
}
provoca un sacco di errori funky. Perché sta succedendo? edit: @ tommieb75 Non posso dare molti dettagli, i risultati non sembrano avere un modello. La lista è usata come un modo generalizzato per disegnare cose sullo schermo, e avere la funzione al posto delle impostazioni dirette crea strani problemi nel rendering -e random-, ma non produce affatto errori nel compilatore. gdb mostra alcuni interi come più grandi di un intero, questo è l'unico schema che trovo. La masterlist è una matrice globale di un'altra struttura. I dati devono essere convertiti nella struttura in questo esempio. Nessun avvertimento o errore del compilatore. Posso attivare avvertimenti più sensibili, ma mi viene sempre segnalato un errore generale che posso pensare. Ho intenzione di provare la soluzione selezionata, che dovrebbe essere sufficiente. In ogni caso funzioni simili che restituiscono le strutture sono usate nel mio codice e funzionano tutte perfettamente tranne che in questo caso con una serie di strutture.
Potrebbe postare alcuni degli errori che si stanno ottenendo? – GameFreak
Qualcuno aggiorna la mia memoria: puoi restituire le strutture in base al valore in C? –
perché no? i puntatori dovrebbero essere più veloci, ma potresti tornare di valore. Btw. www.ideone.com e potresti controllare ;-) – nilphilus