首页 > > > UNUSED参数,这个宏,很秀
前言
你们有没有在写代码的时候,遇到有的参数,从函数体里面传进来,但是又用不上,所以就不引用,但是不引用,在编译的时候,就会提示错误。是不是很尴尬,我们不使用,并不是错误,为什么会提示编译错误?
我想了下,这个是可以理解的,我们做一个系统,肯定是希望可靠性强一点,如果不提示错误,那就出现一个警告,如果我们编译出现很多很多个警告,我们都不在意,假设有一个警告导致了致命的问题,我们的系统就崩溃了。
所以,严格编译规范是势在必行的。
#define UNUSED(x) (void)(x)我们这样使用这个宏
void f(int x) {
UNUSED(x);
...
}使用 void 把 x 做格式转换,这行代码不管在什么编译器上,都可以得心应手,当然了,我们也可以把void改成int,但是这样执行的时候,可能占用的机器周期就不同了。最好的还是 转换成void格式。
#define UNUSED(x) (x = x)相比上一个写法,我觉得这个更容易理解,不过本身没啥意义。
代码如下
#ifdef __GNUC__
# define UNUSED(x) UNUSED_ ## x __attribute__((__unused__))
#else
# define UNUSED(x) UNUSED_ ## x
#endif
#ifdef __GNUC__
# define UNUSED_FUNCTION(x) __attribute__((__unused__)) UNUSED_ ## x
#else
# define UNUSED_FUNCTION(x) UNUSED_ ## x
#endif我们正常编译命令
gcc test.c && ./a.out加上宏编译
gcc -Wno-unused-parameter test.c && ./a.out原文作者:;如有侵权,请联系管理员删除。