我是靠谱客的博主 专一胡萝卜,最近开发中收集的这篇文章主要介绍[小技巧] gcc attribute error 属性小试,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

gcc __attribute__  里有一个属性是 error 可以用于编译时报错。


参考:

https://gcc.gnu.org/onlinedocs/gcc-4.3.0/gcc/Function-Attributes.html

error (" message ")
If this attribute is used on a function declaration and a call to such a functionis not eliminated through dead code elimination or other optimizations, an errorwhich will include message will be diagnosed. This is usefulfor compile time checking, especially together with __builtin_constant_pand inline functions where checking the inline function arguments is notpossible through extern 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 属性小试的全部内容,希望文章能够帮你解决[小技巧] gcc attribute error 属性小试所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(71)

评论列表共有 0 条评论

立即
投稿
返回
顶部