I am using the following code.
const int X_ORIGIN = 1233086;
const int Y_ORIGIN = -4728071;
const int Z_ORIGIN = 4085704;
const int xyzOrigin[NUM_DIMENSIONS] = {X_ORIGIN, Y_ORIGIN, Z_ORIGIN};
When I compile it, GCC gives me the following error.
Transformations.h:16:1: error: initializer element is not constant
What does that mean? How can I fix my code?
Often people are mislead by the naming of the keyword const
, implying something of a constant value that can't be changed. In C at least, it means readonly. const
qualified objects at file scope are not having the proper constness to serve as array initializers.
As an example for non-constant constness, it is perfectly ok to declare
const volatile unsigned int milliseconds_since_boot;
being a value that gets updated from outside the compiler's control (think HW register) and that you are not allowed to assign to, i.e. it is readonly.