首页 > 代码库 > [小技巧] gcc attribute error 属性小试
[小技巧] gcc attribute error 属性小试
gcc __attribute__ 里有一个属性是 error 能够用于编译时报错。
參考:
https://gcc.gnu.org/onlinedocs/gcc-4.3.0/gcc/Function-Attributes.html
error ("
message")
__builtin_constant_p
and inline functions where checking the inline function arguments is notpossible throughextern char [(condition) ? 1 : -1];
tricks. While it is possible to leave the function undefined and thus invokea link failure, when using this attribute the problem will be diagnosedearlier and with exact location of the call even in presence of inlinefunctions or when not emitting debugging information. 写了一个简单的演示样例:
extern void foo(void) __attribute__((error("build failed"))); #define FOO 0 int main(void) { if(FOO == 0) foo(); return 1; }
这里因为 FOO == 0 推断成立,所以会在编译时候直接报以下的错误:
/tmp/helloworld.c: In function ‘main‘:
/tmp/helloworld.c:7:6: error: call to ‘foo‘ declared with attribute error: build failed
这里文件名称/行号和错误的信息 "build failed" 都会输出。
另外。内核的 BUILD_BUG() 这个宏也是用了GCC这个属性。
[小技巧] gcc attribute error 属性小试
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。