我正在编译背后的代码
class Test {
public:
Test() {}
int k;
};
int main() {
Test t;
std::cout << t.k << "\n";
}
喜欢
g/clang++ main.cpp -Wall -Wextra --std=c++14 -o exe; ./exe
为什么两个编译器都没有对整数的不确定值发出警告,这不是一个非常严重的潜在错误吗?如何为不确定的初始化启用警告?
答案 0 :(得分:4)
在此示例中,当我将-O1
(或更高版本)授予gives me the desired warning时。
大概它用来检测到这种情况的任何机制都以某种方式与优化工作量挂钩。 It's a notoriously hard thing to do。
确保您同时注意发布生成警告和调试生成警告。