Welches Flag sollte ich verwenden, um einen guten C ++ 11-Stil zu erzwingen?

8

Ich lerne C ++ und versuche, guten Code zu schreiben. Ich verwende derzeit eine Menge Compiler-Flags wie

-Wextra -Wall -pedantic -Werror -Wfatal-errors -Wcast-qual -Wcast-align -Wconversion -Wdouble-promotion -Wfloat-equal -Wshadow -Wpointer-arith -Weffc++ -ansi -Wstrict-aliasing

Ich habe gerade erfahren, dass die Schlüsselwörter new und delete in C ++ 11 nicht mehr verwendet werden sollten. Ich habe jedoch keine Warnungen, wenn ich sie benutze.

Gibt es einige Flags, um einen guten C ++ 11-Stil zu gewährleisten?

    
Tom Cornebize 05.10.2014, 08:11
quelle

1 Antwort

5

Zuerst müssen Sie feststellen, dass Ihr Compiler niemals den guten Stil voll durchsetzen wird.

Es gibt jedoch zwei Techniken, die Sie verwenden können, damit der Compiler help Ihren eigenen Stil erzwingt: Warnungen (die in der Befehlszeile oder in Pragmas übergeben werden können) und Poison-Pragmas.

Es ist jedoch schwierig, die genauen Warnungen zu verwalten, die mit jeder Compiler-Version verfügbar sind. Daher habe ich eine Liste von Warnungen . Beachten Sie, dass die Unterstützung für den Klang minimal ist, seine Warnungen sind in der Regel schlechter als gcc's, trotz ihrer fantastischen Vermarktung; Außerdem ist es unmöglich zu erkennen, welche Version des Clangs Sie verwenden, um Fehler zu umgehen (Feature Detection Makros sind eher wertlos).

Ich habe auch eine Liste mit Gift gemacht.

Zusätzlich habe ich eine Makefile-Magie, die sicherstellt, dass die obigen zwei Techniken auf jede anwendbare Datei angewendet werden und einige andere Überprüfungen durchführen.

Es sollte jedoch beachtet werden, dass jede Anwendung unterschiedliche Anforderungen hat, daher sollten diese Header nicht so verwendet werden, wie sie sind. Sehr wenige Anwendungen würden beispielsweise std::string wie ich vergiften wollen.

    
o11c 05.10.2014, 08:41
quelle