On 11/13/2012 04:13 PM, danielfsantos@xxxxxxx wrote: > +#define __compiletime_assert(condition, msg, __func) \ > + do { \ > + bool __cond = !(condition); \ > + extern void __func(void) __compiletime_error(msg); \ > + if (__cond) \ > + __func(); \ > + __compiletime_error_fallback(__cond); \ > + } while (0) > + > +#define _compiletime_assert(condition, msg, __func) \ > + __compiletime_assert(condition, msg, __func) > + > +/** > + * compiletime_assert - break build and emit msg if condition is false > + * @condition: a compile-time constant condition to check > + * @msg: a message to emit if condition is false > + * > + * In tradition of POSIX assert, this macro will break the build if the > + * supplied condition is *false*, emitting the supplied error message if the > + * compiler has support to do so. > + */ > +#define compiletime_assert(condition, msg) \ > + _compiletime_assert(condition, msg, __compiletime_assert_ ## __LINE__) > + Whoops, this implementation pastes the tokens before allowing them to expand, it should be something like this: #define __compiletime_assert(condition, msg, __func) .... stuff #define _compiletime_assert(condition, msg, prefix, suffix) \ __compiletime_assert(condition, msg, prefix ## suffix) #define compiletime_assert(condition, msg) \ _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__) I'll fix that as well. Daniel -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html