procedimiento - puente grua normas de seguridad
Error: el elemento inicializador no es computable en el momento de la carga (2)
Tengo una función que toma una estructura, y estoy tratando de almacenar sus variables en una matriz, pero lo consigo cuando ejecuto gcc -Wall -ansi -pedantic-errors -Werror
int detect_prm(Param prm) {
int prm_arr[] = {prm.field1, prm.field2, prm.field3};
return 0;
}
Obtengo un error: el elemento inicializador no es computable en el momento de la carga cuando trato de compilar lo anterior. Me parece bien, ¿qué pasa?
Esto es ilegal en C. Las listas de inicializadores deben ser expresiones de tiempo de compilación constantes. Haga lo siguiente en su lugar:
int prm_arr[3];
prm_arr[0] = prm.field1;
prm_arr[1] = prm.field2;
prm_arr[2] = prm.field3;
La respuesta de Mike es absolutamente correcta.
Sin embargo, si puede utilizar las extensiones C de GNU, o bien usar el estándar C99 más nuevo y mejor (use la opción --std=c99
), los inicializadores como este son perfectamente legales. El estándar C99 ha estado listo durante, bueno, 9 años, y la mayoría de los compiladores de C lo soportan bastante bien ... especialmente esta característica.