1、编译期间检查
#define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))
此物就是在编译期间做一个检查,gcc编译如下:
int main()
{
BUILD_BUG_ON(1 == 2);
BUILD_BUG_ON(1 != 2);
}
在编译期间,直接报错,sizeof的数组的下标为负值。
那么,可以如下修改么?
#define BUILD_BUG_ON(condition) char[1 - 2*!!(condition)]
不行,这么就是运行期了,直接崩溃。
本文介绍了一种在GCC编译器中使用的编译期检查技巧,通过预处理器宏`BUILD_BUG_ON`来确保某些条件不会在编译时触发错误。这种技巧能够帮助开发者在编译阶段发现并修正代码中的潜在问题。
736

被折叠的 条评论
为什么被折叠?



