c - 在 gcc 4.8 版本中, 'var' 的地址将始终计算为 'true'

标签 c gcc

使用 gcc 4.8.3 版本,当我尝试编译代码时,我面临以下问题。

错误:“x”的地址将始终评估为“true”[-Werror=address]

        if (x) {
           ^
cc1: all warnings being treated as errors

代码:-

boolean x[MEM_WORD_WIDTH];

if (mm (temp)) {
   intro= etcorn (mmd, with, packing,x, eiP, message);
}
else{
  if (x) {
   //code
  }
}

“x”被标记为 bool 值。 当我使用早期的 gcc 版本(4.1.x)运行这个时。我没有发现任何问题。

最佳答案

您的 X 不是 bool 值,而是 bool 值数组。

因此,if 不检查任何 bool 值,而是检查该数组的地址。

关于c - 在 gcc 4.8 版本中, 'var' 的地址将始终计算为 'true',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48055946/

相关文章:

c - avr-gcc 编译?有人能帮我吗

gcc - -Wextra 真的有用吗?

c - GCC - memcpy 自动复制空字符?

c++ - 将函数参数类型声明为 auto

c - 在 C 中打印用循环填充的字符串?

c - 为什么我得到 "Use of undeclared identifier ' malloc'”?

c - 我如何退出导致段错误的函数并返回调用函数

c - C 中的可变参数函数

c - 带有 FormatMessage 函数的 printf

ubuntu - 使用 32G RAM 构建 Yocto 时内存不足