Reputation: 7631
I have a function that takes a struct, and I'm trying to store its variables in array:
int detect_prm(Param prm) {
int prm_arr[] = {prm.field1, prm.field2, prm.field3};
return 0;
}
But with gcc -Wall -ansi -pedantic-errors -Werror
I get the following error:
initializer element is not computable at load time
It looks fine to me, what's wrong?
Upvotes: 15
Views: 38812
Reputation: 79752
Mike's answer is absolutely right.
However, if you're able to use the GNU C extensions, or to use the newer and better C99 standard instead (use the --std=c99
option), then initializers such as this are perfectly legal. The C99 standard has been out for, well, 9 years, and most C compilers support it quite well... especially this feature.
Upvotes: 18
Reputation: 6738
This is illegal in C. Initializer lists must be constant compile time expressions. Do the following instead:
int prm_arr[3];
prm_arr[0] = prm.field1;
prm_arr[1] = prm.field2;
prm_arr[2] = prm.field3;
Upvotes: 18