Форум программистов, компьютерный форум CyberForum.ru

NDEBUG - C++

Восстановить пароль Регистрация
 
Erjay
0 / 0 / 0
Регистрация: 03.08.2013
Сообщений: 91
16.09.2013, 17:25     NDEBUG #1
"С++ позволяет программисту "удалить" проверки в окончательной версии программы, просто определив директивой #define" константу NDEBUG. Это приведет к тому, что препроцессор превратит все вызовы assert() в модуле в ничего не делающие команды".
Попробовал так (код ниже), но не работает. Как правильно реализовать?
C++
1
2
3
4
5
6
7
#define NDEBUG
int _tmain(int argc, _TCHAR* argv[])
{
    int x = 10;
    assert (x < 0);
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2013, 17:25     NDEBUG
Посмотрите здесь:

C++ NDEBUG и DEBUG

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11841 / 6820 / 771
Регистрация: 27.09.2012
Сообщений: 16,911
Записей в блоге: 2
Завершенные тесты: 1
16.09.2013, 17:34     NDEBUG #2
Это
C++
1
#define NDEBUG
должно быть до определения макроса assert

Добавлено через 40 секунд
C++
1
2
3
4
5
6
7
#define NDEBUG
#include <assert.h> //cassert
 
int main ( ) {
  int x = 10 ;
  assert ( x < 0 ) ;
}
gazlan
2863 / 1811 / 272
Регистрация: 27.08.2010
Сообщений: 4,910
Записей в блоге: 1
16.09.2013, 17:47     NDEBUG #3
assert
This macro is disabled if, at the moment of including <assert.h>, a macro with the name NDEBUG has already been defined. This allows for a coder to include as many assert calls as needed in a source code while debugging the program and then disable all of them for the production version by simply including a line like:

#define NDEBUG

at the beginning of its code, before the inclusion of <assert.h>.
P.S.

Если используете MFC - пишите ASSERT.
Raali
16.09.2013, 18:07     NDEBUG
  #4

Не по теме:

Кстати вопрос по теме, а что с assert'ом то станет - обратится в вызов ничего не делающей функции, или вообще очистится как буд-то и не было ничего?
...
все, нашел , превратится в (void)0

Yandex
Объявления
16.09.2013, 18:07     NDEBUG
Ответ Создать тему
Опции темы

Текущее время: 23:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru