2016-01-22 52 views
6

我們的項目使用C++ 11/14,並且我們希望使用nullptr而不是0NULL帶指針,即使0(作爲整數字面量)是允許的。哪個Clang警告等同於來自GCC的Wzero-as-null-pointer-constant?

我有以下代碼:

int main() 
{ 
    int *ptr1 = nullptr; // #1 
    int *ptr2 = 0;  // #2 
} 

如果我與海灣合作委員會(5.3.0)和#2-Wzero-as-null-pointer-constant它警告編譯,但我無法找到鏘類似的標誌。如果我用Clang(3.7.1)和國旗-Weverything編譯代碼,我沒有收到關於#2的任何警告。

那麼,有沒有辦法在Clang中得到類似的警告?

+1

這比這更糟糕。在C++中,您可以使用任何整數常量表達式評估爲零,而不僅僅是文字...例如。 '!!!!! 1'。 – 6502

+1

@ 6502我認爲這是C++ 98中的行爲,但C++ 14似乎改變了這一點。看到這[回答](http://stackoverflow.com/a/33656869/2484624)。如果我理解正確,'!!!!! 1'是一個整型常量表達式(它的計算結果爲false),而不是一個整型文字。 – Daniel

+0

IIRC clang實際上帶有一個工具,用'nullptr'自動替換舊的空指針常量。 –

回答

4

Clang不支持這些警告(即,Clang中沒有相應的-Wzero-as-null-pointer-constant)。如果您添加-Weverything選項(請注意僅用於測試),您可以看到它自己,它啓用了所有Clang的警告。

Live Demo