南宁网站制作公,湖北省住房城乡建设厅网站查,网站后台怎么做外部链接,凡科网站建设多少钱前言你们有没有在写代码的时候#xff0c;遇到有的参数#xff0c;从函数体里面传进来#xff0c;但是又用不上#xff0c;所以就不引用#xff0c;但是不引用#xff0c;在编译的时候#xff0c;就会提示错误。是不是很尴尬#xff0c;我们不使用#xff0c;并不是错… 前言你们有没有在写代码的时候遇到有的参数从函数体里面传进来但是又用不上所以就不引用但是不引用在编译的时候就会提示错误。是不是很尴尬我们不使用并不是错误为什么会提示编译错误我想了下这个是可以理解的我们做一个系统肯定是希望可靠性强一点如果不提示错误那就出现一个警告如果我们编译出现很多很多个警告我们都不在意假设有一个警告导致了致命的问题我们的系统就崩溃了。所以严格编译规范是势在必行的。UNUSED 宏#define UNUSED(x) (void)(x)
我们这样使用这个宏void f(int x) {UNUSED(x);...
}
使用 void 把 x 做格式转换这行代码不管在什么编译器上都可以得心应手当然了我们也可以把void改成int但是这样执行的时候可能占用的机器周期就不同了。最好的还是 转换成void格式。UNUSED 宏2#define UNUSED(x) (x x)
相比上一个写法我觉得这个更容易理解不过本身没啥意义。使用 gcc/clang 的UNUSED属性代码如下#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
编译的时候加上参数源码#include stdio.hint main(int argc, char * const argv[])
{int i 0;printf(hello,world\n);return 0;
}我们正常编译命令加上 -Wall是指把所有的警告都提示出来加上 -Werror 是指把警告转成错误提示出来这样会停止编译gcc -Wall -Werror test.c ./a.out
加上宏编译gcc -Wno-unused-parameter test.c ./a.out
参考https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html推荐阅读专辑|Linux文章汇总专辑|程序人生专辑|C语言嵌入式Linux微信扫描二维码关注我的公众号