Error: el elemento inicializador no es computable en el tiempo de carga

Tengo una función que toma una estructura, y estoy tratando de almacenar sus variables en una matriz, pero me sale esto cuando ejecuto gcc -Wall -ansi -pedantic-errors -Werror

int detect_prm(Param prm) { int prm_arr[] = {prm.field1, prm.field2, prm.field3}; return 0; } 

Me sale un error: el elemento inicializador no es computable en el momento de la carga cuando bash comstackr lo anterior. Me parece bien, ¿qué pasa?

Esto es ilegal en C. Las listas de inicialización deben ser expresiones de tiempo de comstackció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 usar las extensiones GNU C, o usar el estándar C99 más nuevo y mejor (use la opción --std=c99 ), entonces los inicializadores como este son perfectamente legales. El estándar C99 ha estado fuera durante 9 años, y la mayoría de los comstackdores de C lo soportan bastante bien … especialmente esta característica.