Assert C++

инициализировать std vector в C++ с примерами Программирование и разработка

В языке C ++ появились операторы утверждений, чтобы помочь программистам проверять условия или утверждения, которые могут быть логически неверными. Сегодня в этой статье о C ++ мы будем использовать оператор assert в наших примерах, чтобы проиллюстрировать его работу по выдаче ошибок в случае возникновения какой-либо логической проблемы. Если вам нужна помощь в отладке таких операторов, вам повезло, что у вас есть эта статья. Давайте начнем нашу новую статью о C ++ с открытия консольного приложения оболочки системы Ubuntu 20.04 с помощью сочетания клавиш «Ctrl + Alt + T».

Вы будете создавать новый файл C ++ в своем терминале. Это необходимо сделать с помощью запроса «touch» внутри оболочки. Таким образом, запрос, используемый для этой цели, был отображен на изображении ниже.

Таким образом, запрос, используемый для этой

Теперь файл помещен в домашний файловый менеджер системы Linux. Мы должны открыть этот файл C ++ в одном из установленных редакторов, то есть в vim, text или nano. Итак, для этой цели мы выбрали редактор GNU Nano. Команда для открытия этого нового файла показана ниже.

Теперь файл помещен в домашний файловый менеджер системы Linux

Пример 1

Начнем с самого первого примера использования оператора assert в коде C ++ для проверки логики некоторых операторов кода. Мы начали код с заголовочных файлов. Добавление заголовка потока ввода-вывода необходимо, когда вы работаете на платформе C ++. Стандартное пространство имен является обязательным в C ++ с ключевыми словами using и Std в нем, как вы также можете видеть на изображении. Для пользователя «assert» нам нужно добавить файл заголовка assert, чтобы он работал. Таким образом, мы добавили заголовочный файл «Assert.h» с ключевым словом «#include». Для выполнения запущен метод main ().

Мы инициализировали целочисленную переменную с именем «val» значением 13. В следующей строке подряд переменная «val» была переопределена другим значением 15. После этого был использован оператор assert для проверки того, является ли переменная » val «имеет значение 13. Поскольку это логически неверно и переменная» val «была переопределена значением 15, это вызовет исключение. Сохраним код после завершения функции main () с помощью «Ctrl + S». После сохранения нам нужно вернуться в терминал для компиляции и выполнения с помощью «Ctrl + X».

Читайте также:  Примеры конкатенации строк Python

Для компиляции кода C ++ вам понадобится какой-нибудь компилятор

Для компиляции кода C ++ вам понадобится какой-нибудь компилятор, настроенный в вашей системе Ubuntu 20.04. Таким образом, мы использовали инструкцию компиляции g ++ в оболочке для компиляции файла assert.cc. Компиляция ничего не возвращает взамен, что дает нам понять, что код во всем синтаксически корректен. Давайте просто выполним файл с нашей постоянной командой «./a.out» в консоли. Запуск файла возвращает ошибку, поскольку оператор assert возвращает false. Результат представлен на прикрепленном изображении.

Запуск файла возвращает ошибку, поскольку оператор assert возвращает false

Если вы хотите избежать вывода заявленной ошибки оператором assert, вам необходимо определить флаг No Debug в вашем коде C ++. Для этого вы должны использовать ключевое слово «определить» со знаком решетки и «NDEBUG» в качестве флага в области заголовка. Таким образом, мы открыли тот же файл и добавили пространство имен после заголовочного файла «io». После стандартного пространства имен мы определили флаг «NDEBUG» в заголовке и использовали заголовок «assert.h» после него. Убедитесь, что не изменили последовательность заголовков, показанную ниже. Внутри функции main () мы добавили оператор cout для вывода, что отключение assert было успешным.

После стандартного пространства имен мы определили флаг «NDEBUG»

Давайте скомпилируем и снова запустим этот обновленный код в оболочке. После этого мы не получили ошибок на этот раз, используя «NDEBUG» в нашей области заголовка. Давайте скомпилируем и снова запустим этот обновленный код в оболочке

Пример 2

Давайте рассмотрим новый пример использования оператора assert в коде C ++. Но на этот раз мы будем использовать оператор assert в некоторой пользовательской функции. Таким образом, мы добавили файлы заголовков и стандартное пространство имен в начале кода в последовательности. Был объявлен определяемый пользователем метод с именем «show ()», принимающий в качестве параметра значение указателя целочисленного типа.

В функции show () мы использовали оператор assert, чтобы проверить, не является ли указатель, переданный в параметре, NULL. Если он нулевой, будет выдана ошибка. Оператор cout затем отобразит значение переменной, на которую указывает указатель «v». В основной функции мы инициализировали целочисленную переменную «val» значением 13. Два указателя «a» и «b» были инициализированы в NULL. Адрес переменной «val» был привязан к указателю «a». Функция show () была вызвана с указателем «a» и «b» отдельно для вывода разных результатов. Второй вызов функции show должен вызвать исключение, потому что он принимает указатель NULL, а оператор assert возвращает false в ответ. Сохраним и запустим код.

В функции show () мы использовали оператор assert

После запуска этого фрагмента кода мы получили тот же результат, который мы обсуждали выше. Он показывает результат 13 для первого вызова функции, т.е. Переданный указатель «a», в то время как вызов другой функции показывает ошибку.

После запуска этого фрагмента кода мы получили тот же результат

Чтобы исправить эту ошибку, вам просто нужно связать указатель «b» с переменной «val». Таким образом, мы сделали то же самое в показанном ниже коде. Мы заменили переменную val на v1 и добавили другую переменную v2. Переменная v1 была связана с указателем «a», а v2 была связана с указателем «b». Общий сценарий остается таким же, как показано.

Чтобы исправить эту ошибку, вам просто нужно связать указатель «b» с переменной «val»

После отладки и запуска кода ошибок пока не обнаружено. Оба значения переменных v1 и v2 были успешно отображены, как показано ниже. После отладки и запуска кода ошибок пока не обнаружено

Пример 3

Давайте закончим последним, но не последним примером утверждения утверждения в коде C ++. Код содержит два оператора assert и два оператора cout. Первый оператор assert проверяет, дает ли умножение тот же результат. Поскольку условие является логически правильным, оно должно возвращать истину, и никаких ошибок отображаться не будет. Оператор cout будет выполнен, показывая, что первый оператор был правильным. Другой оператор assert снова проверяет, возвращает ли умножение с обеих сторон одинаковый результат. Поскольку вывод не будет таким же, он будет логически неверным. Следовательно, он вернет false. Из-за этого возникнет ошибка, и оператор cout после этого не будет выполняться.

Из-за этого возникнет ошибка, и оператор cout

Из-за логической ошибки программа автоматически завершается после выполнения первого cout. Из-за логической ошибки программа автоматически завершается

Чтобы решить эту проблему, мы будем использовать в коде флаг «NDEBUG», как мы это делали до сих пор. Чтобы решить эту проблему, мы будем использовать в коде флаг

На этот раз ошибок не было, и выполняются оба оператора cout. На этот раз ошибок не было, и выполняются

Вывод

Статья посвящена использованию оператора assert в C ++. Мы изо всех сил старались продемонстрировать его работу с помощью функции main () и пользовательской функции. Мы также обсудили способ отключения утверждения в C ++, то есть флаг NDEBUG.

Оцените статью
bestprogrammer.ru
Добавить комментарий