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?
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;
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With