我有一个assert
可以解析为 的宏,if
如下所示:
#define assert(expr) \
if (!(expr)) \
{ \
handle_failed_assert(); \
}
忽略如何handle_failed_assert()
工作,你不需要引用这个do { ... } while(0)
技巧。请关注这背后的功能。
现在,真正的问题来了。有时我想强迫和断言,让它有意义。所以我们使用这个:
assert(!"Assert cause carefully described.");
问题是我们有这个基于RVCT 2.2的编译器vrxcc ,它在编译时会抛出这个警告:
#236-D: controlling expression is constant
当然,这会解析为 compile constant if
。
我怎么能欺骗编译器接受它?