Aracılığıyla paylaş


assert (CRT)

Değerlendirir bir deyim ve sonucu olduğunda false, tanılama iletisi yazdırır ve program iptal eder.

void assert( 
   int expression 
);

Parametreler

  • expression
    İfade (işaretçiler dahil), sıfır olmayan veya 0 olarak değerlendirir.

Notlar

assert Makro uygulayarak program geliştirme sırasında mantık hataları tanımlamak için kullanılan tipik olarak expression için değerlendirmek için bağımsız değişken false yalnızca, program hatalı çalışıyor. Hata ayıklama işlemi tamamlandıktan sonra onaylama işlemi denetimi tanımlayıcısını tanımlayarak kaynak dosyayı değiştirmeden kapatılabilir NDEBUG. NDEBUGile tanımlanan bir /D komut satırı seçeneği ile veya bir #define yönergesi. NDEBUG İle tanımlanan #define, yönergesi assert önce yer almalıdır.H dahil edilir.

assertBaskı bir tanılama iletisi expression veren false (0) ve aramalar İptal program yürütme sonlandırmak için. Hiçbir işlem yapılmaz expression olan true (sıfırdan farklı). Tanılama iletisi başarısız ifade, burada onaylama işlemi başarısız kaynak dosyası ve satır numarası adını içerir.

Tanılama iletisini geniş karakter yazdırılır. Bu nedenle, ifadesinde Unicode karakterleri bile beklendiği gibi çalışır.

Tanılama iletisinin hedefini yordam olarak adlandırılan uygulama türüne bağlıdır. Konsol uygulamaları üzerinden ileti her zaman almak stderr. Windows tabanlı bir uygulama içinde assert Windows çağıran MessageBox birlikte iletiyi görüntülemek için bir ileti kutusu oluşturma işlevi bir Tamam düğme. Kullanıcı tıklattığında Tamam, program hemen iptal eder.

Uygulama hata ayıklama sürümü çalışma zamanı kitaplıkları ile bağlandığında assert üç düğmesi ile bir ileti kutusu oluşturur: İptal, yeniden, ve Yoksay. Kullanıcı tıklattığında İptal, program hemen iptal eder. Kullanıcı tıklattığında yeniden, hata ayıklayıcısı olarak adlandırılır ve just-in-time (JIT) hata ayıklama etkinse, kullanıcı program hatalarýný. Kullanıcı tıklattığında Yoksay, assert ile normal yürütme devam eder: ileti kutusu oluşturma Tamam düğme. O tıklatarak Not Yoksay ne zaman bir hata koşulu var tanımsız davranışlara neden.

crt hata ayıklama hakkında daha fazla bilgi için bkz: crt hata ayıklama teknikleri.

assert Yordamı, hem yayın ve hata ayıklama sürümleri c çalışma zamanı kitaplıkları içinde kullanılabilir. Diğer iki onaylama işlemi makrolar, _assert ve _asserte, öğeler de kullanılabilir, ancak bunlar yalnızca ne zaman kendilerine iletilen deyimleri değerlendirmek _debug bayrağı tanımlanmış.

Gereksinimler

Yordamı

Gerekli başlık

assert

<assert.h>

Örnek

Bu programda analyze_string işlevini kullanan assert işlevi birkaç koşul sınamak için ilişkili dize ve uzunluğu. Durumlardan herhangi biri başarısız olursa, program ne çıkan bildiren bir hata iletisi yazdırır.

// 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
}
      

.NET Framework Eşdeğeri

System::Diagnostics::Debug:: onaylama

Ayrıca bkz.

Başvuru

Hata işleme (crt)

İşlem ve ortam denetimi

abort

raise

signal

_assert, _asserte makrolar

_DEBUG