Консультация № 196006
23.07.2019, 02:24
0.00 руб.
0 3 1
Здравствуйте! Я не могу понять assert я в интернете много читал и так не понял смысла этого заголовочного файла, и макросы смысл их использовать если можно использовать функции ???

Обсуждение

давно
Управляющий
143894
2148
23.07.2019, 08:42
общий
Assertэтоспециальнаяконструкция, позволяющаяпроверятьпредположенияозначенияхпроизвольныхданных в произвольном месте программы Этаконструкцияможе автоматическисигнализироватьприобнаружениинекорректныхданных, чтообычноприводиткаварийномузавершениюпрограммысуказаниемместаобнаружениянекорректныхданных.

Типа так. Старался писать в понятном для вас синтаксисе.
Об авторе:
Устав – есть устав! Если ты устав – то отдыхай!


давно
Мастер-Эксперт
259041
7459
23.07.2019, 10:02
общий
Вы задали уже 5 Вопросов на нашем портале rfpro.ru , получили на них Ответы либо советы в минифорумах Ваших консультаций. Но Вы ни разу не поблагодарили экспертов за бескорыстну.ю помощь в Ваш адрес и ни разу не проставили Оценку за Ответ.

Вам пора сменить свой разгильдяйский стиль общения на культурно-трудолюбивый, иначе эксперты будут просто игнорировать Ваши Вопросы.
давно
Старший Модератор
31795
6196
23.07.2019, 15:57
общий
это ответ
Здравствуйте, 89993102578z!

Начнем с описания:
Функция assert оценивает выражение, которое передается ей в качестве аргумента, через параметр expression. Если аргумент-выражение этого макроса в функциональной форме равно нулю (т.е. выражение ложно), сообщение записывается на стандартное устройство вывода ошибок и вызывается функция abort, работа программы прекращается.

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

Макрос #define NDEBUG , взависимости от того, где он определен: ДО или ПОСЛЕ #include <cassert>: если после то программа будет создана в "РЕЖИМЕ ОТЛАДКИ"(дальше смотри описание), если до, то все обращения к этой функции будут игнорироваться компилятором. Т.е. програмисту достаточно в коде поменять местами define и include, чтобы перейти от работащего кода к отладке и на оборот, вместо того, чтобы по коду искать, ну пусть будет 120-ть или 325-ть или 889-ть,(где они должны быть, нужны они там и прочие сомнения кодера) вызовов этой функции.
Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа