Ir para o conteúdo

Última atualização:2026-10-12

Asserções com assert em C++

Sobre o autor:

Conta oficial do WeChat:

wechat

1.Primeiro exemplo de asserção

Assert é uma macro, não uma função.

A macro assert tem seu protótipo definido em (C) e (C++). Sua função é terminar a execução do programa se sua condição retornar um erro.

É possível desativar o assert definindo NDEBUG, mas isso deve ser feito no início do código-fonte, antes do include de .

void assert(int expression);

Exemplo de código: assert.c

#include <stdio.h> 
#include <assert.h> 

int main() 
{ 
    int x = 7; 

    /*  Some big code in between and let's say x  
    is accidentally changed to 9  */
    x = 9; 

    // Programmer assumes x to be 7 in rest of the code 
    assert(x==7); 

    /* Rest of the code */

    return 0; 
} 
Saída:
assert: assert.c:13: main: Assertion 'x==7' failed.
Como se pode ver, a saída mostra o arquivo-fonte, o número da linha e o local do erro!

2.Asserções versus tratamento de erros normal

  • As asserções são usadas principalmente para verificar situações impossíveis na lógica.

Por exemplo, elas podem ser usadas para verificar o estado que o código espera antes de começar a executar, ou para verificar o estado após a conclusão da execução. Diferente do tratamento de erros normal, as asserções normalmente são desativadas em tempo de execução.

  • Para ignorar as asserções, adicione no início do código:
    #define NDEBUG          // 加上这行,则 assert 不可用
    

Código de exemplo: ignore_assert.c

Tópicos relacionados

Comentários