It is now exactly two years that I wrote about the underestimated register
keyword in C. Today I’d like to tell about an idea that is spinning in my head ever since, that register
variables in file scope would be a perfect tool to offer a feature that is much missed in C: named constants of arbitrary data types.
The whole of it is a bit technical, be warned, but the essence of it will be to declare something like the following in a header file, without creating linkage or “instantiation” problems, and helping us to write readable and debuggable code:
register const double PI = 3.14159265358979323846; typedef struct listElem listElem; struct listElem { unsigned val; listElem* next; }; register const listElem singleton = { 0 };