Tengo un C (no C++) struct que dice asíC matrices struct
typedef struct mystruct{
float a,b;
int x, y;
} mystruct;
Luego, en una función que recopilar datos de esta manera:
mystruct List[MAX];
ListNumber = 0;
for(i = 0; i < MAX; i++)
{
if(conditions_meet)
{
List[ListNumber].a = masterlist[i].a;
... etc
ListNumber++;
}
}
luego envío la matriz a una función
DoStuff(static int max, mystruct array[max]){
Stuff
}
Esto funciona, pero cuando trato de hacerlo de esta manera ....
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 una gran cantidad de errores cobardes. ¿Por qué está pasando esto? editar: @ tommieb75 No puedo dar muchos detalles, los resultados no parecen tener un patrón. La lista se usa como una forma generalizada de dibujar cosas en la pantalla, y tener la función en lugar de la configuración directa crea problemas extraños en la representación (y al azar), pero no produce ningún error del compilador. gdb muestra algunos enteros como más grandes que un entero, ese es el único patrón que encuentro. masterlist es una matriz global de otra estructura. Los datos deben convertirse a la estructura en este ejemplo. Sin advertencias o errores del compilador en absoluto. Puedo entregar avisos más sensibles quizás, pero siempre me informan de cualquier error general que pueda pensar. Voy a probar la solución seleccionada, eso debería ser suficiente. De todos modos, las funciones similares que devuelven las estructuras se usan en mi código y todo funciona perfectamente a excepción de este caso con una matriz de estructuras.
Podría publicar algunos de los errores que está recibiendo? – GameFreak
Alguien actualiza mi memoria: ¿Puedes devolver las estructuras por valor en C? –
¿por qué no? los punteros deberían ser más rápidos, pero podría devolver por valor. Por cierto. www.ideone.com y usted podría verificar ;-) – nilphilus