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