We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hello,
I want to use the #error directive to limit the size of a statically allocated array during compilation (it must not exceed a certain limit, and I want to fail compilation, not startup, if it is too large), but I can only work with constant expressions, of course. Is there a way to do this...?
Thanks.
Maybe something like this is what you want:
... some declaration of my_array ... #define MAX_SIZE 5000 /* bytes, for example */ typedef int dummy[sizeof(my_array) <= MAX_SIZE ? 1 : -1];
If the size of the array is small enough this will create a legal typedef named dummy that we don't actually use.
If the size is too big then the typedef is illegal an the compiler should give an error.
Some compilers/mode allow zero length arrays, but I haven't met one that allows -1 length arrays.