Для обработки неопределённого поведения в C++ на практике можно использовать следующие подходы:
- Проверка кода до компиляции с помощью статических анализаторов, таких как Cppcheck, Clang Static Analyzer, PVS-Studio. 1 Они способны найти многие проблемы и привлечь внимание к сомнительному коду. 1
- Использование предупреждающих флагов компилятора. 2 У большинства компиляторов есть такие флаги, которые предупреждают о некоторых случаях неопределённого поведения во время компиляции. 2
- Сборка кода под разные платформы с разными уровнями оптимизаций и сравнение его поведения. 1 Код без ошибок должен быть переносимым и вести себя одинаково. 1
- Отключение оптимизаций с помощью флагов компилятора. 14 Также можно отключить оптимизации, которые полагаются на неопределённое поведение. 4
Следует помнить, что дать точную гарантию отсутствия неопределённого поведения может только коллегия экспертов, которая сверяет каждую строчку кода со стандартом. 1