c assert assertion handling c with examples
Цей підручник з C ++ затверджує світло на твердження в C ++, які є твердженнями для перевірки припущень у програмі, зроблених програмістом:
приклади програм для Інтернету речей
У програмі на C ++ ми зазвичай робимо припущення в програмі, як індекс масиву повинен бути більшим за нуль.
Коли ці припущення справджуються, програма запускає штраф, але коли ці припущення стають хибними, програма не закінчується нормально.
=> Завітайте сюди, щоб отримати повний курс експертів на C ++.
Що ви дізнаєтесь:
Твердження в C ++
Твердження - це твердження на C ++, яке перевіряє стан, подібний до описаного вище. Якщо умова відповідає дійсності, програма продовжує працювати нормально, а якщо умова хибна, програма припиняється і відображається повідомлення про помилку.
Ми можемо надати твердження, використовуючи макрос препроцесора assert.
За допомогою цілого числа myInt ми можемо оголосити твердження, що myInt має бути> 0 наступним чином.
assert (myInt > 0);
Припустимо, що вказане значення myInt дорівнює -1, отже, твердження не вдається, коли компілятор зустрічає вищезазначений оператор, оскільки значення myInt дорівнює -1. Коли твердження не вдається, видається повідомлення про недійсне твердження разом із назвою програми та номером рядка, а програма припиняється.
Загальний прототип assert такий:
assert (умова) де умова => вираз скалярного типу
Асерт - це макрос препроцесора, який використовується для обчислення умовного виразу. Якщо умовний вираз вважає помилковим, програма закінчується після відображення повідомлення про помилку. Повідомлення про помилку зазвичай складається з невдалого умовного виразу, імені файлу коду та номера рядка затвердження.
Таким чином ми дізнаємось, де виникла проблема, а також яка проблема виникла в коді. Отже, використання тверджень робить налагодження більш ефективним.
Заголовок C ++< касерт > містить функціональність затвердження. Ми здебільшого використовуємо функцію assert у коді, щоб перевірити, чи параметри, передані функції, дійсні, перевірити повернене значення функції або перевірити межі масиву серед іншого.
Основний приклад твердження С ++.
#include #include using namespace std; void display_number(int* myInt) { assert (myInt!=NULL); cout<<'myInt contains value' << ' = '<<*myInt< Вихід:

У наведеній вище програмі ми використовували виклик assert, який містить вираз (myInt! = NULL) у функції display_number. Спочатку у головній функції ми передаємо змінну покажчика second_ptr, що містить адресу змінної myptr. Коли цей дзвінок зроблений, твердження відповідає дійсності. Отже, виконання програми є нормальним, і значення відображається.
Під час другого виклику display_number ми передаємо нульовий покажчик, тим самим роблячи твердження false. Таким чином, коли здійснюється другий дзвінок, відображається повідомлення про невдале твердження, як показано на виході.
Вимкнення твердження за допомогою NDEBUG
Коли ми використовуємо твердження, вони перевіряються під час виконання. Твердження роблять налагодження ефективним, але слід подбати про те, щоб не включати твердження у збірку випуску програми. Це тому, що ми знаємо, що коли ми випускаємо програму, ми робимо це лише тоді, коли впевнені, що програма ретельно перевірена.
Отже, нам потрібно вимкнути всі твердження, коли ми випускаємо програмне забезпечення. Ми можемо відключити твердження в програмі, використовуючи макрос NDEBUG. Використання макросу NDEBUG у програмі відключає всі виклики для затвердження.
Ми можемо включити в програму рядок, наведений нижче, щоб вимкнути всі твердження.
#define NDEBUG
Наступні програми на C ++ показують, як програма поводиться, коли коментується NDEBUG, а також коли активний NDEBUG.
# 1) NDEBUG вказано, але прокоментовано.
#include // uncomment to disable assert() //#define NDEBUG #include using namespace std; int main() { assert(2+2==3+1); cout << 'Expression valid...Execution continues.
'; assert(2+2==1+1); cout << 'Asset disabled...execution continuous with invalid expression
'; }
Вихід:
Як запустити файли .jar у Windows 10

У цій програмі ми вказали оператор #define NDEBUG, але коментуємо. Це означає, що оператор утвердження активний. Таким чином, коли програма виконується, другий виклик затвердження повертає false і повідомлення про помилку блимає, і програма переривається.
# 2) NDEBUG активний.
#include // uncomment: assert() disabled #define NDEBUG #include using namespace std; int main() { assert(2+2==3+1); cout << 'Expression valid...Execution continues.
'; assert(2+2==1+1); cout << 'Assert disabled...execution continuous with invalid expression
'; }
Вихід:

У цій програмі ми прокоментували макрос NDEBUG. Тепер, коли ми виконуємо програму, оператори assert більше не діють. Отже, програма продовжує своє нормальне виконання, навіть якщо друга умова в твердженні твердження хибна.
Таким чином, коментуючи рядок #define NDEBUG, ми відключили оператори утвердження в програмі.
Стверджувати та static_assert
Твердження, яке ми бачили дотепер, виконується під час виконання. C ++ підтримує ще одну форму твердження, відому як static_assert, і вона виконує перевірку твердження під час компіляції. Він присутній з C ++ 11.
Static_assert має такий загальний синтаксис.
static_assert (bool_constexpr, message)
Тут bool_constexpr => cКонтекстуально перетворений постійний вираз типу bool.
Повідомлення => Рядок, який відображатиметься як повідомлення про помилку, якщо bool_constexpr хибне.
Отже, якщо значення bool_constexpr має значення true, програма працює нормально. Якщо bool_constexpr має значення false, тоді видається помилка компілятора.
У наведеній нижче програмі показано використання static_assert у програмі на C ++.
#include #include using namespace std; int main() { assert(2+2==3+1); static_assert(2+2==3+1, '2+2 = 3+1'); cout << 'Expression valid...Execution continues.
'; assert(2+2==1+1); static_assert(2+2==1+1, '2+2 != 1+1'); cout << 'Assert disabled...execution continuous with invalid expression
'; }
Вихід:

У наведеній вище програмі ми надали static_assert вираз та повідомлення. Коли він не вдається, видається помилка компілятора, як показано на виході.
Часті запитання
Q # 1) Що таке Assert у C ++?
додаток, де ви можете завантажити відео YouTube
Відповідь: Твердження в C ++ - це заздалегідь визначений макрос, за допомогою якого ми можемо перевірити певні припущення, встановлені в програмі. Коли умовному виразу в твердженні твердження встановлено значення true, програма продовжує нормально. Але коли вираз хибний, видається повідомлення про помилку і програма припиняється.
Q # 2) Що таке static_assert?
Відповідь: Static_assert обчислюється під час компіляції проти оператора assert (), який обчислюється під час виконання.
Static_assert було включено в С ++ починаючи з С ++ 11. Умовний вираз і повідомлення потрібно відображати як аргументи. Коли умова вважається хибним, видається помилка компілятора і відображається повідомлення. Потім програма припиняється.
Q # 3) Яка мета макросу assert ()?
Відповідь: Макрос Assert () використовується для перевірки умов або припущень, які не повинні виникати в програмі. Наприклад, індекс масиву завжди повинен бути> 0. Іншим припущенням може бути 2 + 2 == 3 + 1.
Отже, використовуючи assert (), ми можемо перевірити такі припущення, і поки вони оцінюються як істинні, наша програма працює нормально. Якщо вони помилкові, програма припиняється.
Висновок
У цьому посібнику ми бачили роботу операторів assert () у C ++. Оператор assert () визначений у заголовку. Ми можемо відключити затвердження за допомогою макросу NDEBUG. Розробники повинні бути обережними, щоб твердження не можна було використовувати у виробничому коді, оскільки передбачається, що виробничий код ретельно перевірений та не містить помилок.
Окрім оператора assert () C ++ 11 також підтримує static_assert (), який обчислюється під час компіляції. Коли static_asset () має значення false, видається помилка компілятора, і програма припиняється.
Твердження - це спосіб перевірити припущення в програмі, і, оцінивши умовні вирази всередині тверджень, ми можемо ретельно протестувати програму, і налагодження стає більш ефективним.
=> Перевірте ВСІ підручники з C ++ тут.
Рекомендована література
- Підручник з обробки винятків C # із прикладами коду
- Приклади твердження селену - практичне застосування в проектах
- Структура програми C # та основний синтаксис із прикладами
- Підручник з Python DateTime із прикладами
- Вирізати команду в Unix з прикладами
- Синтаксис команд Unix Cat, варіанти з прикладами
- Використання курсору в MongoDB з прикладами
- Команда Ls в Unix з прикладами