c - 这解析为什么?

标签 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);
......

最佳答案

它获取x 的地址,然后将其转换为void。结果是——什么都没有。

但是编译器可能认为当一个变量的地址被占用时,它就被“使用”了。

关于c - 这解析为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42263021/

相关文章:

c - 为什么 gcc 以不同的方式编译 f(1199) 和 f(1200)?

gcc - 无法使用 GCC 构建 Boost 库

c++ - 查看C++编译后生成的指令大小?

c - 如何将一个字符串分成多个部分并反向重构?

java到C/C++(carbide c/c++)转换

c - 在 VGA 模式下绘制一个字符

android - Android 支持线程吗?

c++ - 无锁同步

c++ - gcc 根据优化创建崩溃代码

c - 以编程方式访问笔记本电脑嵌入式风扇 Controller ?