Il nostro progetto utilizza C++ 11/14 e vogliamo utilizzare nullptr
anziché 0
o NULL
con i puntatori, anche quando è consentito 0
(come valore letterale intero).Quale avviso di Clang è equivalente a Wzero-as-null-pointer-constant di GCC?
Ho il codice seguente:
int main()
{
int *ptr1 = nullptr; // #1
int *ptr2 = 0; // #2
}
Se posso compilare con GCC (5.3.0) e la bandiera -Wzero-as-null-pointer-constant
IT avvertimenti in #2
, ma non riesco a trovare una bandiera simile a Clang. Se compilo il codice con Clang (3.7.1) e la bandiera -Weverything
, non ricevo alcun avviso su #2
.
Quindi, c'è un modo per ottenere un avviso simile per questo in Clang?
È anche peggio di così. In C++ puoi usare qualsiasi espressione costante intera che valuti zero, non solo un valore letterale ... ad es. '!!!!! 1'. – 6502
@ 6502 Penso che sia stato il comportamento in C++ 98, ma C++ 14 sembra cambiarlo. Vedi questo [risposta] (http://stackoverflow.com/a/33656869/2484624). Se ho capito bene, '!!!!! 1' è un'espressione costante integrale (che valuta' false') e non un valore letterale intero. – Daniel
Il clang IIRC viene fornito con uno strumento per sostituire automaticamente le vecchie costanti del puntatore nullo con 'nullptr'. –