Перехват assert() с побочными эффектами

У нас есть несколько баз кода C среднего размера, которые получают коммиты от разработчиков с разным уровнем опыта. Некоторые из менее дисциплинированных программистов совершают операторы assert()с побочными эффектами, вызывающими ошибки с отключенными утверждениями. Например.

assert(function_that_should_always_be_called());

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

13
задан 15 May 2012 в 02:36
поделиться