c++ - 如何修复 Werror=parentheses(建议在赋值周围使用括号)错误?

标签 c++ c++11

我有一行代码可以同时执行赋值和条件。我可以将它分成两行,但我只是对抛出的错误消息感到好奇。

  if ( parameters->__size = m_Elements.size() ) 
得到这个错误:建议在赋值周围使用括号作为真值 [-Werror=parentheses]
我试过了:
   if ( (parameters->__size) = (m_Elements.size()) )
错误不会消失。但我觉得我已经完成了我被提示做的事情,并在作业周围添加了括号。为什么错误没有消失?我错过了什么?

最佳答案

为了让编译器相信赋值确实是您想要的,您需要将整个表达式括在括号中,如下所示:

    if ( ( parameters->__size = m_Elements.size() ) ) 
    //...
没有这个,编译器认为你可能犯了一个错误,使用赋值( = )而不是比较( == )运算符。

关于c++ - 如何修复 Werror=parentheses(建议在赋值周围使用括号)错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65073159/

相关文章:

c++ - 为什么二进制文件不放在 CMAKE_CURRENT_BINARY_DIR 中?

c++ - 从 C++ 类调用 Objective C 实例方法?

c++11 - 为什么是 int* arr = {};合法的?

c++ - 使用 clang 和 g++ 编译此 "simple"程序时出现链接错误

c++ - 是否可以在不使指针失效的情况下调整/重新分配大块内存?

c++ - 加载自定义 dll + 自定义应用程序失败并显示 : error while loading shared libraries

c++ - 使用自动工具构建静态/共享库时如何避免双重编译?

c++ - unique_ptr 删除器开销

c++ - 为什么 std::function 的初始化器必须是 CopyConstructible?

c++ - 可变参数和函数指针 vector