From the 21st century C book:
Static variables, even those inside of a function, are initialized when the program starts, before main, so you can’t initialize them with a nonconstant value.
//this fails: can't call gsl_vector_alloc() before main() starts static gsl_vector *scratch = gsl_vector_alloc(20);
Why can't gsl_vector_alloc be called before main starts?