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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
helloy
0 / 0 / 0
Регистрация: 15.11.2013
Сообщений: 46
#1

Деректива assert - C++

16.11.2013, 02:36. Просмотров 338. Ответов 5
Метки нет (Все метки)

Как правильно?

C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <assert.h>
#define NDEBUG assert(n == 0);
 
 
int main() {
    int n=0;
    NDEBUG
    std::cout<<n;
return 0;
 
}
Миниатюры
Деректива assert  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.11.2013, 02:36     Деректива assert
Посмотрите здесь:

текстовые файлы.деректива #define. C#
C++ Исключения, возврат кодов ошибок, assert и 1 вопрос про исключение.
Деректива include C++
assert.h C++
C++ Необходимо помочь с след. функциями assert(), malloc(), iterator
деректива use Perl
Assert C++
макрос assert() для считывания даных из файла из указаного диапазона C++
C++ Qt ASSERT No style available without qapplication
Java assert vs exception
PHP Assert() Error
C++ Как исправить Debug Assert Failed в коде работы с матрицей?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
stima
432 / 287 / 16
Регистрация: 22.03.2011
Сообщений: 936
Завершенные тесты: 1
16.11.2013, 02:42     Деректива assert #2
C++
1
2
3
4
5
6
7
8
9
10
#include <cassert>
#include <iostream>
 
int main()
{
    assert(false); //false == 0
    std::cout << "Hello world!" << std::endl;
 
    return 0; 
}
Ваирант 1 (DEBUG)

(LINUX) g++ -DDEBUG main.cpp && ./a.out
(MSVC) project->build debug

Вариант 2 (NDEBUG)

(LINUX) g++ -DNDEBUG main.cpp && ./a.out
(MSVC) project->build release
helloy
0 / 0 / 0
Регистрация: 15.11.2013
Сообщений: 46
16.11.2013, 05:51  [ТС]     Деректива assert #3
Цитата Сообщение от stima Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
#include <cassert>
#include <iostream>
 
int main()
{
    assert(false); //false == 0
    std::cout << "Hello world!" << std::endl;
 
    return 0; 
}
Ваирант 1 (DEBUG)

(LINUX) g++ -DDEBUG main.cpp && ./a.out
(MSVC) project->build debug

Вариант 2 (NDEBUG)

(LINUX) g++ -DNDEBUG main.cpp && ./a.out
(MSVC) project->build release
понял преимущества особенно для консоли(хоть и пишу в VS).
Стоит ли это использовать часто? или не стоит злоупотреблять?
0x10
2451 / 1623 / 238
Регистрация: 24.11.2012
Сообщений: 3,993
16.11.2013, 08:39     Деректива assert #4
Откуда задание? Еще не видел, чтобы assert обзывали директивой.
Цитата Сообщение от helloy Посмотреть сообщение
Стоит ли это использовать часто? или не стоит злоупотреблять?
Везде, где нужно выразить предположение программиста о некоторых условиях. Иначе говоря, assert фиксирует условия, которые при корректном коде должны выполняться всегда.
l2ded
 Аватар для l2ded
80 / 68 / 11
Регистрация: 10.05.2011
Сообщений: 284
16.11.2013, 13:18     Деректива assert #5
Цитата Сообщение от 0x10 Посмотреть сообщение
Откуда задание? Еще не видел, чтобы assert обзывали директивой.
Эккель. Философия C++. Введение в стандартный C++. Питер.2004
salam
157 / 138 / 11
Регистрация: 10.07.2012
Сообщений: 709
16.11.2013, 13:42     Деректива assert #6
C++
1
#define NDEBUG // дальше можно ничего не писать
означает, что все assert-ы будут как будто удалены. никаких сообщений об ошибках выводится не будет.
используется, как уже сказали, когда вы точно знаете, чему должна быть равна данная переменная, и если это не так - фэйл. например, проверяете, что знаменатель дроби не равен 0.
ничего плохого в нем нет, кроме лишних проверок, которые он выполняет, но когда вы дебажите программу это абсолютно не важно. читал где-то, что сейчас не модно, ибо есть средства лучше.
Yandex
Объявления
16.11.2013, 13:42     Деректива assert
Ответ Создать тему
Опции темы

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