[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [avr-gcc-list] Can enumerator values be used in a #if preprocessordi
From: |
David Brown |
Subject: |
Re: [avr-gcc-list] Can enumerator values be used in a #if preprocessordirective? |
Date: |
Tue, 30 Aug 2011 14:45:15 +0200 |
User-agent: |
Mozilla/5.0 (Windows NT 5.1; rv:6.0) Gecko/20110812 Thunderbird/6.0 |
On 30/08/2011 14:03, Bob Paddock wrote:
Refinements of the concept left as an exercise for the reader. Regards,
Does that mean I am not allowed to post my refinements?
No. Please post. Extra points for using __FILE__ __FUNCITON__ and
__LINE__ to give meaningful error message.
The error message already contains information about the line number,
just like for any other error message.
You can't get very meaningful errors here - I have not found any way to
get a user-defined error message in conjunction with static asserts.
There is, AFAIK, an effort to get standardised static assertions into
both C and C++ with useful messages. But in a fine example of
mind-blowing stupidity, C++0x uses
static_assert(expression, message)
while C1x calls it _Static_assert.
If your compiler supports static_assert or _Static_assert (gcc 4.6
onwards) then you are best using it directly.
Digging out my old issue of Embedded Systems on Compile Time Assertions
we find this:
http://www.eetimes.com/discussion/programming-pointers/4025549/Catching-errors-early-with-compile-time-assertions
One thing to watch out for in some of the examples I've seen is in C99
a zero length variable array could be created.
My macros (message is for compatibility with future C/C++ standards, and
self-documentation of the code - it is not used by the macro):
#define STATIC_ASSERT_NAME_(line) STATIC_ASSERT_NAME2_(line)
#define STATIC_ASSERT_NAME2_(line) assertion_failed_at_line_##line
#define static_assert(claim, message) \
typedef struct { \
char STATIC_ASSERT_NAME_(__LINE__) [(claim) ? 1 : -1]; \
} STATIC_ASSERT_NAME_(__LINE__)
- [avr-gcc-list] Can enumerator values be used in a #if preprocessor directive?, Bob Paddock, 2011/08/29
- Re: [avr-gcc-list] Can enumerator values be used in a #if preprocessordirective?, Weddington, Eric, 2011/08/29
- Re: [avr-gcc-list] Can enumerator values be used in a #if preprocessordirective?, Wim Lewis, 2011/08/29
- Re: [avr-gcc-list] Can enumerator values be used in a #if preprocessordirective?, Bob Paddock, 2011/08/29
- Re: [avr-gcc-list] Can enumerator values be used in a #if preprocessordirective?, Dave Hansen, 2011/08/29
- Re: [avr-gcc-list] Can enumerator values be used in a #if preprocessordirective?, David Brown, 2011/08/30
- Re: [avr-gcc-list] Can enumerator values be used in a #if preprocessordirective?, Bob Paddock, 2011/08/30
- Re: [avr-gcc-list] Can enumerator values be used in a #if preprocessordirective?,
David Brown <=
- Re: [avr-gcc-list] Can enumerator values be used in a #if preprocessordirective?, Bob Paddock, 2011/08/30