Макрос assert (по крайней мере, обычно это макрос) обычно определяется как no-op в коде выпуска. Это будет срабатывать только в отладочном коде. Было сказано, что. Я работал в местах, которые определяли свой собственный макрос assert, и он срабатывал как в режиме отладки, так и в режиме выпуска.
Меня учили использовать утверждения для условия, которое "никогда" не может быть ложным, например предварительных условий для функции.