Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/34: Рейтинг темы: голосов - 34, средняя оценка - 4.65
 Аватар для Vidok
38 / 38 / 4
Регистрация: 03.09.2011
Сообщений: 279

assertion, cassert

05.11.2011, 01:45. Показов 7299. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите пожалуйста о библиотеке cassert. В каких случаях она применяется, зачем нужна, где об этом можно подробно прочесть и посмотреть примеры? Заранее спасибо.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.11.2011, 01:45
Ответы с готовыми решениями:

Assertion failed
Делаю программу Преобразование Фурье, если задать число входных данных 2^21 или больше, то возникает такая ошибка: и билдер виснет...

Debug Assertion Failed!
Доброго времени суток! Не могу понять где ошибка, подскажите пожалуйста. код: #include "stdafx.h" #include...

Debug assertion failed
Проблема при попытке релиза, дебажится при этом нормально, объясните мне, что может быть не так, где искать баги. (скрин ниже) ...

13
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
05.11.2011, 01:56
Лучший ответ Сообщение было отмечено как решение

Решение

например Статическая отладка программ
3
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
05.11.2011, 01:57
Там определена функция assert().
C++
1
2
3
void assert( 
   int expression 
);
Evaluates an expression and, when the result is false, prints a diagnostic message and aborts the program.
Очень полезная функция при отладке программы.
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
05.11.2011, 02:00
только это макрос
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
05.11.2011, 02:07
alex_x_x, я взял цитату непосредственно из MSDN. Макрос не может возвращать void.
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
05.11.2011, 02:20
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void __assert_impl (const char* file,
                    const char* func,
                    const int line,
                    const int expr,
                    const char* str_expr)
{
   if (!expr)
   {
       printf("assertion: %s - %s on %d [%s]", file, func, line, str_expr); 
       exit(-1);
   }
}
                    
 
#define assert(expr) __assert_impl(__FILE__, __FUNCTION__, __LINE__, (expr), #expr)
 
int main()
{
   assert(10<0);
   return 0;
}
Добавлено через 4 минуты
очень даже может, в некотором смысле
0
186 / 186 / 21
Регистрация: 08.01.2011
Сообщений: 1,139
05.11.2011, 04:08
Исключения, ошибки, assertы... Я совсем запутался...
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
05.11.2011, 04:25
Цитата Сообщение от ValeryLaptev
Evaluates an expression and, when the result is false, prints a diagnostic message and aborts the program.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
#define NDEBUG
#include <cassert>
 
using namespace std;
 
int main()
{
    assert(cout << "assert ouput" << endl);
    cout << "ouput" << endl;
    return 0;
}
Code
1
2
3
4
[guest@localhost tests]$ .iso++ t.cpp -o t
[guest@localhost tests]$ ./t
ouput
[guest@localhost tests]$
это именно макрос, который не вычисляет переданное ему выражение, если определена NDEBUG
выражение должно находиться за пределами assert(), чтобы вместо простого отключения не пришлось переписывать
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
05.11.2011, 10:23
Цитата Сообщение от alex_x_x Посмотреть сообщение
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
void __assert_impl (const char* file,
                    const char* func,
                    const int line,
                    const int expr,
                    const char* str_expr)
{
   if (!expr)
   {
       printf("assertion: %s - %s on %d [%s]", file, func, line, str_expr); 
       exit(-1);
   }
}
                    
 
#define assert(expr) __assert_impl(__FILE__, __FUNCTION__, __LINE__, (expr), #expr)
 
int main()
{
   assert(10<0);
   return 0;
}
Добавлено через 4 минуты
очень даже может, в некотором смысле
Ну, то, что макрос может быть в конкретной реализации и определен - понятно. Это и я знаю...
А в MSDN описана функция.
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
05.11.2011, 10:42
Цитата Сообщение от ValeryLaptev
А в MSDN описана функция.
msdn. assert
The assert macro is typically used to identify logic errors during program development
Цитата Сообщение от ValeryLaptev
Это и я знаю
assert() - это макрос по стандарту
C89(draft)
1
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
05.11.2011, 13:23
accept, что пардон-то пардон. Таким образом, приходим к выводу, что писатели из Микрософт вводят народ в заблуждение: прототип прописан от функции, а описывают макрос
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
05.11.2011, 17:06
C89(draft)
Code
1
2
3
4
5
6
7
8
9
10
11
12
4.2.1.1 The assert macro
 
Synopsis
 
         #include <assert.h>
         void assert(int expression);
 
...
 
Returns
 
   The assert macro returns no value.
0
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
05.11.2011, 19:05
accept, ну опять же - практически никто в стандарт С не ходит, чтобы программировать на С++...
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
05.11.2011, 19:27
assert() в C++ из стандарта C89 берётся (там идёт ссылка на него)
19.3

Добавлено через 5 минут
Цитата Сообщение от ValeryLaptev
А в MSDN описана функция.
а msdn мало относится к языку
достаточно прочитать описание fopen() в стандарте и на msdn
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.11.2011, 19:27
Помогаю со студенческими работами здесь

Debug assertion failed
Здравствуйте! Есть 2 двусвязных списка. Нужно написать метод merge который эти списки соединяет. Сам метод я написал. Запускаю, ввожу...

Debug assertion failed
#include &lt;iostream&gt; using namespace std; class Employee { friend class Leader; private: char m_name; char m_no; public: ...

Debug Assertion Failed
Ошибка. Не могу понять что не так. Как я понял с дебагера, проблема во втором освобождении памяти. Вообщем хелп ми) // hw_3.cpp :...

Debug Assertion Failed
Привет всем. Написал такую программу. #include &lt;stdio.h&gt; int n, m; int i, q, d; void merge(int a, int b, int c, int n, int...

Debug Assertion Failed
Создавал небольшой генератор ролей для персонажа и натолкнулся на проблему пиктрелейтед. До определенного момента все работало, пока я не...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru