【发布时间】:2012-12-30 02:52:18
【问题描述】:
我想编译如下所述的时间错误检查。但我无法在main() 中找到如何使用它?
#define BUILD_BUG_ON_ZERO(e) (sizeof(struct { int:-!!(e); }))
#define BUILD_BUG_ON_NULL(e) ((void *)sizeof(struct { int:-!!(e); }))
int main(){
BUILD_BUG_ON_NULL(12);
}
下面是提到的错误
1--error C2332: 'struct' : missing tag name
2--error C2143: syntax error : missing ')' before '{'
3--error C2027: use of undefined type 'main::<unnamed-tag>'
4--error C2143: syntax error : missing ';' before '{'
5--error C2059: syntax error : ')'
谁能告诉我我做错了什么?
【问题讨论】:
-
位域的宽度必须是整数常量表达式。
val不是一个。所以这行不通。 -
使用gcc-4.2编译时,报错
bitfield.c:5: error: bit-field ‘<anonymous>’ width not an integer constant。 -
@DanielFischer:: 我用常量值编辑了问题。但它仍然显示相同的错误。
-
@Learner 这是一个 C 宏,你不应该在 C++ 编译器中使用它。
-
如果你解释你想要做什么,你会得到更好的帮助......“进行编译时错误检查”(这不是语法英语)并没有削减它。跨度>
标签: c++ c macros compiler-errors