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

The assert macro normalmente é usada para identificar erros de lógica durante o desenvolvimento do programa, Implementando o expression argumento a ser avaliada como false somente quando o programa está funcionando incorretamente. Após a conclusão da depuração, verificando a declaração pode ser desligado sem modificar o arquivo de fonte, definindo o identificador de NDEBUG. NDEBUG pode ser definido com um /D opção de linha de comando ou com um #define diretiva. If NDEBUG é definido com #define, a diretiva deve aparecer antes ASSERT.H está incluído.

assert Imprime um diagnóstico mensagem expression é avaliada como false (0) e chamadas anular para terminar 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 número de arquivo e linha de fonte em que a declaração falhou.

In Visual C++ 2005, a mensagem de diagnóstico é impressa em caracteres largos. Assim, ele funcionará sistema autônomo esperado mesmo se não 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 receber a mensagem por meio de stderr. Em um aplicativo baseado no Windows, assert chamadas do 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 será anulada imediatamente.

Quando o aplicativo está vinculado com uma versão de depurar das bibliotecas de time de execução, assert cria uma caixa de mensagem com três botões: Anular, Tente novamente, and Ignorar.Se o usuário clicar em Anular, o programa será anulada imediatamente.Se o usuário clicar em Tente novamente, o depurador é chamado e o usuário pode depurar o programa se a depuração do just-in-time (JIT) estiver 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 quando você clica em Ignorar quando existe uma condição de erro pode resultar em um comportamento indefinido.

Para obter mais informações sobre depuração de CRT, consulte CRT Debugging Techniques.

The assert rotina está disponível em ambas as versões de versão e depurar das bibliotecas do time de execução C. Duas outras asserção macros, _ASSERT and _ASSERTE, estão também disponível, mas eles somente avaliam as expressões passadas para eles quando o _DEBUG sinalizar foi definido.

Requisitos

Rotina

Cabeçalho necessário

assert

<assert.h>

Exemplo

Neste programa, a analyze_string função usa o assert 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 que indica 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
}

Analyzing string 'abc' Analyzing string '(null)' Assertion failed: string != NULL, file crt_assert.c, line 24  This application has requested the Runtime to terminate it in an unusual way. Please contact the application's support team for more information.

Equivalente do NET Framework

sistema::Diagnóstico::depurar:: Assert

Consulte também

Referência

Erro Handling (CRT)

Processo e ambiente de controle

anular

aumentar

sinal

_ASSERT, _ASSERTE macros

_DEBUG