这解析了什么?

时间:2017-02-16 01:06:30

标签: c gcc

我刚刚在Bash的来源中看到了这一点:

/* Force gcc to not clobber X on a longjmp().  Old versions of gcc mangle
   this badly. */
#if .......
#  define USE_VAR(x)    ((void) &(x))
.....

我的问题是((void) &(x))解析了什么?它在Bash的main中使用如下:

.....
USE_VAR(argc);
USE_VAR(argv);
USE_VAR(env);
......

1 个答案:

答案 0 :(得分:3)

它需要x的地址,然后将其转换为void。结果是 - 什么都没有。

但编译器可能会认为,当一个变量的地址被采用时,它就会被"使用"。