Все выпуски  

RFpro.ru: Программирование на C / C++


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

solowey
Статус: Практикант
Рейтинг: 123
∙ повысить рейтинг »
CradleA
Статус: Профессор
Рейтинг: 58
∙ повысить рейтинг »
Асмик Гаряка
Статус: Советник
Рейтинг: 0
∙ повысить рейтинг »

∙ С / С++

Номер выпуска:1962
Дата выхода:28.07.2019, 02:45
Администратор рассылки:Андрей Кузнецов aka Dr_Andrew (Старший модератор)
Подписчиков / экспертов:46 / 33
Вопросов / ответов:1 / 1

Консультация # 196006: Здравствуйте! Я не могу понять assert я в интернете много читал и так не понял смысла этого заголовочного файла, и макросы смысл их использовать если можно использовать функции ??? ...

Консультация # 196006:

Здравствуйте! Я не могу понять assert я в интернете много читал и так не понял смысла этого заголовочного файла, и макросы смысл их использовать если можно использовать функции ???

Дата отправки: 23.07.2019, 02:24
Вопрос задал: 89993102578z (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Зенченко Константин Николаевич (Старший модератор):

Здравствуйте, 89993102578z!

Начнем с описания:

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

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

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

Консультировал: Зенченко Константин Николаевич (Старший модератор)
Дата отправки: 23.07.2019, 15:57
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное