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.
"I don't want to limit the number of elements but the amount of RAM the array consumes - and to enforce that during compilation."
Then ignoring your "various types" requirement, Andy's example becomes:
#define MY_ARRAY_SIZE_MAX 4096 /* Limit array to 4K total */ my_type my_array[MY_ARRAY_SIZE_MAX / sizeof(my_type)];
As I recall:
my_type my_array[MY_ARRAY_SIZE_MAX / sizeof(my_type my_array[0])];
takes care of the type size.
I don't want to limit the number of elements but the amount of RAM the array consumes
how do you have an array that is larger (the number of elements) than "the amount of RAM the array consumes"
Erik
That's an interesting combination of words you've posted there. Is it some sort of answer to the OP's question?
What he means is that he wants to constrain the size (number of elements) of the array by specifically limiting the amount of RAM that it is allowed to occupy.
Yes, I know that is what the OP means, what I was trying to establish is what the curious jumble of words posted by you know who was all about?