У нас есть несколько среднеквадратичных кодовых баз C, которые получают коммиты от разработчиков с различными уровнями опыта. Некоторые из менее дисциплинированных программистов фиксируют операторы assert()
с побочными эффектами, которые вызывают ошибки с утверждениями. Например.
assert(function_that_should_always_be_called());
Мы уже используем собственную реализацию assert()
, но оценка выражения с помощью NDEBUG
приведет к неприемлемым ухудшениям производительности. Есть ли расширение GCC или флаг, который мы можем передать, который будет запускать предупреждения об ошибках компиляции/ошибки? При достаточно простом потоке управления GCC должен иметь возможность определить, что вы вызываете только чистые функции.