Error: Initializer Element Is Not Computable at Load Time

Error: Initializer Element Is Not Computable at Load Time

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?

2 Answers

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;
1

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.

3

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Elena Rostova
Author

Elena Rostova

Elena Rostova holds a Master's degree in Public Health Journalism. She covers groundbreaking medical research, holistic wellness trends, mental health awareness, and nutritional science.