caizilixin1 2015-06-16 05:52
浏览 655

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

不明白的地方,既然预处理之后的代码没有什么作用为什么还写出来?有什么更深层的用意?

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 求解 yolo算法问题
    • ¥15 虚拟机打包apk出现错误
    • ¥30 最小化遗憾贪心算法上界
    • ¥15 用visual studi code完成html页面
    • ¥15 聚类分析或者python进行数据分析
    • ¥15 三菱伺服电机按启动按钮有使能但不动作
    • ¥15 js,页面2返回页面1时定位进入的设备
    • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
    • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
    • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝