В средствах проверки моделей, таких как CBMC (средство проверки ограниченной модели для C), определяемый пользователем оператор утверждения принимает логическое условие, а средство проверки модели проверяет, является ли условие истинным или ложным для всех возможных исполнений программы.
В программировании на C мы определяем макрос assert() с заголовочным файлом assert.h. Макрос assert() возвращает значение TRUE, если его параметр оценивается как TRUE, и предпринимает какие-либо действия, если он оценивает FALSE. Многие компиляторы прервут программу при неудачном вызове assert().
Может ли кто-нибудь прояснить разницу между этими двумя утверждениями в мире проверки моделей и программирования?
assert
возвращаетvoid
, хотя было бы полезно возвращать значение выражения. - person Jonathon Reinhart   schedule 27.08.2016NDEBUG
, потому что тогда условие никогда не оценивается. - person melpomene   schedule 27.08.2016