// C_ASSERT() can be used to perform many compile-time assertions: // type sizes, field offsets, etc. // An assertion failure results in error C2118: negative subscript. #define C_ASSERT(e) typedef char __C_ASSERT__[(e)?1:-1]
You might ask: How the hell does it work? Well, as the comments explain, it works by using a negative subscript (-1) in an array when the expressions to check for is false, which is of course invalid and will cause a compilation error, otherwise, if the expression is true, a positive subscript is used, which is alright. It does this by declaring (but not creating) an array with the size as the subscript.
Hope someone finds it useful.












