我刚刚在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);
......
答案 0 :(得分:3)
它需要x
的地址,然后将其转换为void
。结果是 - 什么都没有。
但编译器可能会认为,当一个变量的地址被采用时,它就会被"使用"。