|
From: | Dave Hansen |
Subject: | Re: [avr-gcc-list] Can enumerator values be used in a #if preprocessordirective? |
Date: | Mon, 29 Aug 2011 16:03:18 -0400 |
> From: address@hidden [...] > So that explains the difference. Seems like there could be a better > error message for this case, 'don't use enum here', alas "The > preprocessor does not know anything about types in the language"... Here's a cute/ugly little macro that might help you find the errors you're looking for: #define ctassert(n,e) extern unsigned char n[(e)?0:-1] Here's an example of how you might use it: enum{a,b,c,d,last}; #define MAX 2 ctassert(big_enough,(last <= MAX)); Note that the macro does not need to be invoked from within a function. If the test fails, the error message is almost pretty good, depending on what you choose for the array name (sztest.c:6: error: size of array `big_enough' is negative). Refinements of the concept left as an exercise for the reader. Regards, -=Dave |
[Prev in Thread] | Current Thread | [Next in Thread] |