问题描述
- USE_VAR(argc); USE_VAR(argv); 的相关问题
-
最近读bash源码发现里面有好多不懂的用法,这是其中的一例,USE_VAR 是一个宏
宏定义如下
#if (__GNUC__ > 2) || (__GNUC__ == 2 && GNUC_MINOR > 8)define USE_VAR(x) ((void)&(x))
#else
define USE_VAR(x)
#endif
在shell.c的main函数里有这样的几句话
USE_VAR(argc);
USE_VAR(argv);
USE_VAR(env);
USE_VAR(code);
USE_VAR(old_errexit_flag);
#if defined (RESTRICTED_SHELL)
USE_VAR(saverst);
#endif经过预处理之后的前两句变成
((void)&(argc));
((void)&(argv));我用的编译器是gcc-4.6.3
不明白的地方,既然预处理之后的代码没有什么作用为什么还写出来?有什么更深层的用意?
时间: 2024-09-18 17:35:52