看看这段 C++ 代码:
class Foo
{
int a;
public: Foo(int b): a(a) {}
};
显然,开发人员打算a
用b
而不是a
自己进行初始化,这是一个很难发现的错误。
Clang++ 会警告这个可能的错误,而 GCC 不会,即使启用了额外的警告:
$ clang++ -c init.cpp
init.cpp:5:27: warning: field is uninitialized when used here [-Wuninitialized]
public: Foo(int b): a(a) {}
^
$ g++ -Wall -Wuninitialized -Winit-self -c init.cpp
$
是否有机会为 g++ 启用相同的输出?