c assert assertion handling c with examples
Este tutorial de afirmação em C ++ ilumina as afirmações em C ++ que são instruções para testar as suposições no programa feitas pelo programador:
como escrever casos de teste em teste de software com exemplo
Em um programa C ++, geralmente fazemos suposições em um programa como um índice de array deve ser maior que zero.
Quando essas suposições se tornam verdadeiras, o programa funciona bem, mas quando essas suposições se tornam falsas, o programa não termina normalmente.
=> Visite aqui para obter o curso C ++ completo com especialistas.
O que você aprenderá:
Asserções em C ++
Uma declaração é uma declaração em C ++ que testa uma condição como a explicada acima. Se a condição for verdadeira, o programa continuará normalmente e se a condição for falsa, o programa é encerrado e uma mensagem de erro é exibida.
Podemos fornecer uma declaração usando uma macro de pré-processador de declaração.
Com o inteiro myInt, podemos declarar uma asserção dizendo que myInt deve ser> 0 da seguinte maneira.
assert (myInt > 0);
Suponha que o valor de myInt especificado seja -1, portanto, a declaração falha quando o compilador encontra a declaração acima, pois o valor de myInt é -1. Quando a asserção falha, uma mensagem informando a asserção inválida é emitida junto com o nome do programa e o número da linha e o programa é encerrado.
Um protótipo geral de afirmação é o seguinte:
assert (condição) onde condição => expressão do tipo escalar
Uma declaração é uma macro de pré-processador usada para avaliar uma expressão condicional. Se a expressão condicional for avaliada como falsa, o programa será encerrado após a exibição da mensagem de erro. A mensagem de erro geralmente consiste na expressão condicional com falha, no nome do arquivo de código e no número da linha da declaração.
Assim, ficamos sabendo onde ocorreu o problema e também qual é o problema que ocorreu no código. Portanto, o uso de asserções torna a depuração mais eficiente.
O cabeçalho C ++< Cassert > contém a funcionalidade de declaração. Usamos principalmente a funcionalidade de declaração no código para verificar se os parâmetros passados para uma função são válidos, para verificar o valor de retorno de uma função ou para verificar os limites do array, entre outras coisas.
Exemplo básico de asserção C ++.
#include #include using namespace std; void display_number(int* myInt) { assert (myInt!=NULL); cout<<'myInt contains value' << ' = '<<*myInt< Resultado:

No programa acima, usamos uma chamada assert que contém a expressão (myInt! = NULL) na função display_number. Na função principal primeiro, passamos uma variável de ponteiro second_ptr que contém o endereço da variável myptr. Quando essa chamada é feita, a declaração é verdadeira. Portanto, a execução do programa é normal e o valor é exibido.
Na segunda chamada para display_number, passamos o ponteiro nulo, tornando assim assert false. Assim, quando a segunda chamada é feita, uma mensagem de falha de asserção é exibida conforme mostrado na saída.
Desativando Asserção com NDEBUG
Quando usamos asserções, elas são verificadas em tempo de execução. As asserções tornam a depuração eficiente, mas deve-se tomar cuidado para não incluir asserções na versão de lançamento do aplicativo. Isso ocorre porque sabemos que, quando lançamos um aplicativo, o fazemos apenas quando temos certeza de que o aplicativo foi testado exaustivamente.
Portanto, precisamos desabilitar todas as afirmações quando lançarmos o software. Podemos desabilitar asserções em um programa usando a macro NDEBUG. O uso da macro NDEBUG em um programa desativa todas as chamadas para assert.
Podemos incluir uma linha fornecida abaixo no programa para desativar todas as instruções assert.
#define NDEBUG
Os programas C ++ a seguir mostram como o programa se comporta quando NDEBUG é comentado, bem como quando NDEBUG está ativo.
# 1) NDEBUG especificado, mas comentado.
#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
'; }
Resultado:
como abrir um arquivo torrent

Neste programa, especificamos a instrução #define NDEBUG, mas ela foi comentada. Isso significa que a instrução assert está ativa. Portanto, quando o programa é executado, a segunda chamada para assert retorna falso e uma mensagem de erro é exibida e o programa é abortado.
# 2) NDEBUG está ativo.
#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
'; }
Resultado:

Neste programa, removemos o comentário da macro NDEBUG. Agora, quando executamos o programa, as instruções assert não estão mais ativas. Conseqüentemente, o programa continua sua execução normal mesmo quando a segunda condição na instrução assert é falsa.
Portanto, ao remover o comentário da linha #define NDEBUG, desabilitamos as instruções assert no programa.
Assert And static_assert
O assert que vimos até agora é executado em tempo de execução. C ++ suporta ainda outra forma de declaração conhecida como static_assert e executa a verificação de declaração em tempo de compilação. Está presente desde C ++ 11.
Um static_assert possui a seguinte sintaxe geral.
static_assert (bool_constexpr, message)
Aqui bool_constexpr => c Expressão constante convertida contextualmente do tipo bool.
Message => String que aparecerá como uma mensagem de erro se bool_constexpr for false.
Portanto, se o bool_constexpr for avaliado como verdadeiro, o programa continuará normalmente. Se bool_constexpr for avaliado como falso, um erro do compilador será emitido.
O programa abaixo mostra o uso de static_assert em um programa 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
'; }
Resultado:

No programa acima, fornecemos static_assert com uma expressão e uma mensagem. Quando ele falha, um erro do compilador é emitido, conforme mostrado na saída.
perguntas frequentes
P # 1) O que é Assert em C ++?
Responda: Uma afirmação em C ++ é uma macro predefinida com a qual podemos testar certas suposições que são definidas no programa. Quando a expressão condicional em uma instrução assert é definida como verdadeira, o programa continua normalmente. Mas quando a expressão é falsa, uma mensagem de erro é emitida e o programa é encerrado.
P # 2) O que é static_assert?
Responda: Static_assert é avaliado em tempo de compilação em relação à instrução assert () que é avaliada em tempo de execução.
Static_assert foi incorporado ao C ++ a partir do C ++ 11. É necessário que a expressão condicional e uma mensagem sejam exibidas como argumentos. Quando a condição é avaliada como falsa, um erro do compilador é emitido e a mensagem é exibida. O programa é encerrado.
Q # 3) Qual é o propósito da macro assert ()?
Responda: A macro Assert () é usada para testar as condições ou suposições que não deveriam ocorrer em um programa. Por exemplo, o índice da matriz deve ser sempre> 0. Outra suposição pode ser 2 + 2 == 3 + 1.
Portanto, usando assert (), podemos testar tais suposições e, desde que sejam avaliadas como verdadeiras, nosso programa funciona normalmente. Quando eles são falsos, o programa é encerrado.
Conclusão
Neste tutorial, vimos o funcionamento das instruções assert () em C ++. A instrução assert () é definida no cabeçalho. Podemos desativar a declaração usando a macro NDEBUG. Os desenvolvedores devem ter cuidado para que assert não possa ser usado no código de produção, pois é esperado que o código de produção seja testado exaustivamente e esteja livre de erros.
copiar dvd para o disco rígido gratuitamente
Além da instrução assert (), o C ++ 11 também suporta static_assert () que é avaliado em tempo de compilação. Quando static_asset () é avaliado como falso, um erro do compilador é emitido e o programa é encerrado.
As asserções são uma forma de testar as suposições no programa e, avaliando as expressões condicionais dentro das asserções, podemos testar o programa completamente e a depuração se torna mais eficiente.
=> Verifique TODOS os tutoriais em C ++ aqui.
Leitura recomendada
- Tutorial de tratamento de exceções C # com exemplos de código
- Exemplos de asserção de selênio - Aplicações práticas em projetos
- Estrutura do programa C # e sintaxe básica com exemplos
- Tutorial Python DateTime com exemplos
- Cortar comando no Unix com exemplos
- Sintaxe de comando Unix Cat, opções com exemplos
- Uso do Cursor no MongoDB com Exemplos
- Comando Ls no Unix com exemplos