declarar (CRT)

Avalia uma expressão e, quando o resultado é false, imprime uma mensagem de diagnóstico e anula o programa.

void assert( 
   int expression 
);

Parâmetros

  • expression
    Expressão (inclusive os ponteiros) que é avaliada como diferente de zero ou 0.

Comentários

O assert macro geralmente é usada para identificar erros de lógica durante o desenvolvimento do programa por meio da implementação de expression argumento a ser avaliada como false somente quando o programa estiver funcionando incorretamente.Depois de depuração estiver concluída, a verificação de declaração pode ser desligada sem modificar o arquivo de origem, definindo o identificador NDEBUG.NDEBUGpode ser definido com um /D a opção de linha de comando ou com um #define diretiva.Se NDEBUG é definida com #define, a diretiva deve aparecer antes de ASSERT.H está incluído.

assertImprime um diagnóstico mensagem expression for avaliada como false (0) e chamadas anular para finalizar a execução do programa.Nenhuma ação será executada se expression é true (diferente de zero).A mensagem de diagnóstico inclui a expressão com falha, o nome do que o número de linha e o arquivo de origem onde o assertion failed.

A mensagem de diagnóstico é impresso em caracteres de largura.Assim, ele funcionará conforme o esperado, mesmo se houver caracteres Unicode na expressão.

O destino da mensagem de diagnóstico depende do tipo de aplicativo que chamou a rotina.Aplicativos de console sempre recebem a mensagem por meio de stderr.Em um aplicativo baseado no Windows, assert chama o Windows MessageBox função para criar uma caixa de mensagem para exibir a mensagem junto com um OK botão.Quando o usuário clica OK, o programa anula imediatamente.

Quando o aplicativo está vinculado com uma versão de depuração das bibliotecas de tempo de execução, assert cria uma caixa de mensagem com três botões: anular, novamente, e Ignorar.Se o usuário clicar em anular, o programa anula imediatamente.Se o usuário clicar em novamente, o depurador é chamado e o usuário pode depurar o programa se a depuração just-in-time (JIT) está ativada.Se o usuário clicar em Ignorar, assert continua com sua execução normal: criar a caixa de mensagem com o OK botão.Observe que clicar em Ignorar quando existe a uma condição de erro pode resultar em um comportamento indefinido.

Para obter mais informações sobre a depuração do CRT, consulte Técnicas de depuração CRT.

O assert rotina está disponível em ambas as versões de lançamento e de depuração das bibliotecas de tempo de execução C.Duas outras macros de declaração, _ASSERT e _ASSERTE, também estão disponíveis, mas eles somente avaliam as expressões passadas para eles quando o _ Debug sinalizador foi definido.

Requisitos

Rotina

Cabeçalho necessário

assert

<assert.h>

Exemplo

Neste programa, o analyze_string função usa o assert a função para testar várias condições relacionadas à seqüência de caracteres e comprimento.Se alguma das condições a falhar, o programa imprime uma mensagem indicando o que causou a falha.

// crt_assert.c
// compile with: /c
#include <stdio.h>
#include <assert.h>
#include <string.h>

void analyze_string( char *string );   // Prototype

int main( void )
{
   char  test1[] = "abc", *test2 = NULL, test3[] = "";

   printf ( "Analyzing string '%s'\n", test1 ); fflush( stdout );
   analyze_string( test1 );
   printf ( "Analyzing string '%s'\n", test2 ); fflush( stdout );
   analyze_string( test2 );
   printf ( "Analyzing string '%s'\n", test3 ); fflush( stdout );
   analyze_string( test3 );
}

// Tests a string to see if it is NULL, 
// empty, or longer than 0 characters.
void analyze_string( char * string )
{
   assert( string != NULL );        // Cannot be NULL
   assert( *string != '\0' );       // Cannot be empty
   assert( strlen( string ) > 2 );  // Length must exceed 2
}
  
  

Equivalência do .NET Framework

System::Diagnostics::Debug:: Assert

Consulte também

Referência

Erro de manipulação (CRT)

Processo e controle do ambiente

anulação

aumentar

sinal

_ASSERT, _ASSERTE macros

DEBUG