dav*_*agp 1 c++ g++ compiler-warnings
是否可以向g ++添加其他警告标志,以便它在下面的代码中警告我关于单元化的b变量?
#include <iostream>
using namespace std;
int main() {
int a, b;
cin >> a;
while (a>0) b++;
cout << a;
}
Run Code Online (Sandbox Code Playgroud)
编辑:我忘了提到我已经尝试打开另一个问题中列出的标志: 标志启用彻底和冗长的g ++警告但没有触发.("嘀嗒!",如下所述.)
小智 7
您所追求的选项很可能-Wmaybe-uninitialized或-Wuninitialized.这两个都是-Wall打开这些的选项的一部分,以及许多其他警告(-Wxxx选项与警告有关).
有关gcc警告选项的完整文档,请参阅:gcc文档中的请求或抑制警告选项.
您可能还会发现它-Wextra可能对您有用(单独使用或与之结合使用-Wall). -Wextra还支持-Wuninitialized,但它有没有总是被设定其它项目-Wall和是那些我喜欢看(喜欢的东西-Wunused-parameter和-Wunused-but-set-parameter)......虽然不是专门针对该位的代码多数民众赞成.
这就是说......(是啊,有一个"上面写着")......我似乎不能胳肢错误与海湾合作委员会这一功能是可以用http://gcc.godbolt.org.
使用文档中具体描述的代码扩展代码 -Wmaybe-uninitialized
#include <iostream>
using namespace std;
int main() {
int a, b;
int x, y, z;
// warning: variable ‘y’ set but not used [-Wunused-but-set-variable]
cin >> a;
while (a>0) b++;
switch(a) {
case 1: x = 1; y = 1; z++; break;
// warning: ‘z’ may be used uninitialized in this function [-Wmaybe-uninitialized]
case 2: x = 4; y = 2; break;
case 3: x = 5; y = 3;
}
cout << a;
cout << b;
cout << x;
}
Run Code Online (Sandbox Code Playgroud)
这是试图搔痒一些未使用的和单元化的警告.我能够得到z变量来产生错误,但由于某种原因b++,while循环不会产生错误或gcc警告(使用gcc 4.9.0测试).
铛版本3.4.1,但是,并产生与这两个命令行选项警告b和z
虽然-Wall并且-Wextra 应该产生你所追求的警告,但由于某种原因,他们没有为gcc 4.9.0中的这段特定代码产生所需的警告
| 归档时间: |
|
| 查看次数: |
277 次 |
| 最近记录: |