Avatar von Rainer  Grimm
  • Rainer Grimm

229 Beiträge seit 01.05.2017

Re: Undefiniertes Verhalten in C++

Undefiniertes Verhalten heißt, dass alle Effekte möglich sind.
Ihre erste Strategie war bereits sehr gut. Das Programm mit möglichst vielen Compilern übersetzen und das höchste Warnniveau aktivieren. Dann sollten sie sich jede Warnung genau anschauen. Falls cpp-Checker nicht hilft, ist der Sanitizer immer noch sehr gut: Mittlerweile macht er auch Checks auf undefined behavior: https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html. Sanitizer ist im GCC und Clang (und langsam auch Windows) integriert. Wenn Sie Windows verwenden, bietet sich auch der Core Guidelines Checker (https://www.modernescpp.com/index.php/c-core-guidelines-lifetime-safety) an.
Wenn das nicht zum Ziel führt, ist die folgende Strategie häufig zielführend. Vereinfachen sie das Programm sukzessive und versuchen sie damit das undefined behavior immer enger einzugrenzen.

Bewerten
- +