【问题标题】:GNU c++ compiler option to flag if (a = b)GNU c++ 编译器选项来标记 if (a = b)
【发布时间】:2020-08-15 11:11:57
【问题描述】:

今天早上脑部痉挛。不记得要标记的 GNU 编译器选项

if (a = b) 

作为一个警告/错误,因为它是一个赋值而不是一个条件。

【问题讨论】:

标签: c++ gcc gnu


【解决方案1】:

最简单的方法是启用所有警告并查看报告的内容:

int main(int argc, char **argv){
    if(argc=0) ;
}

-Wall编译

你会收到警告:

<source>: In function 'int main(int, char**)':

<source>:3:12: warning: suggest parentheses around assignment used as truth value [-Wparentheses]

    3 |     if(argc=0) ;

      |        ~~~~^~

Compiler returned: 0

所以选项是:-Wparentheses

https://godbolt.org/z/6ac1zG

【讨论】:

  • @BenjaminMaurer 那是懒惰的方式:)。文档很长
  • IDK,我刚刚用谷歌搜索并获得了文档。似乎更懒惰:P
  • 适用于这种情况,但请注意,通常-Wall(甚至-Wextra)不会启用编译器可以产生的所有警告(尽管有名称!)。
  • @P__J__ 悲伤-Wshadow噪音
猜你喜欢
  • 2018-01-29
  • 1970-01-01
  • 2015-06-16
  • 2014-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多