Aracılığıyla paylaş


set_unexpected (CRT)

tarafından unexpectedçağrılmak üzere kendi sonlandırma işlevinizi yükler.

Sözdizimi

unexpected_function set_unexpected( unexpected_function unexpFunction );

Parametreler

unexpFunction
İşlevi değiştirmek için yazdığınız işlevin işaretçisi unexpected .

Dönüş değeri

Önceki işlevin daha sonra geri yüklenebilmesi için tarafından _set_unexpected kaydedilen önceki sonlandırma işlevinin işaretçisini döndürür. Önceki bir işlev ayarlanmamışsa, varsayılan davranışı geri yüklemek için dönüş değeri kullanılabilir; bu değer olabilir NULL.

Açıklamalar

set_unexpected işlevi tarafından unexpectedçağrılan işlev olarak yüklenirunexpFunction. unexpected geçerli C++ özel durum işleme uygulamasında kullanılmaz. Türü unexpected_function EH'de tanımlanır. H, unexpFunction döndüren void, kullanıcı tanımlı beklenmeyen bir işlevin işaretçisi olarak. Özel unexpFunction işlevinizin çağırana geri dönmemesi gerekir.

typedef void ( *unexpected_function )( );

Varsayılan olarak, unexpected öğesini çağırır terminate. Kendi sonlandırma işlevinizi yazarak ve işlevinizin adını bağımsız değişkeni olarak çağırarak set_unexpected bu varsayılan davranışı değiştirebilirsiniz. unexpected için bağımsız değişken set_unexpectedolarak verilen son işlevi çağırır.

çağrısı set_terminatetarafından yüklenen özel sonlandırma işlevinin aksine içinden bir özel durum oluşturulabilir unexpFunction.

Çok iş parçacıklı bir ortamda, her iş parçacığı için beklenmeyen işlevler ayrı ayrı tutulur. Her yeni iş parçacığının kendi beklenmeyen işlevini yüklemesi gerekir. Bu nedenle, her iş parçacığı kendi beklenmeyen işleme sorumluluğundadır.

C++ özel durum işlemenin geçerli Microsoft uygulamasında varsayılan unexpected olarak çağrılır terminate ve hiçbir zaman özel durum işleme çalışma zamanı kitaplığı tarafından çağrılmaz. çağrısının unexpectedterminateyerine belirli bir avantajı yoktur.

Dinamik olarak bağlı tüm DLL'ler veya EXE'ler için tek set_unexpected bir işleyici vardır. İşleyicinizi çağırsanız set_unexpected bile başka bir dll veya EXE tarafından ayarlanan bir işleyiciyi değiştiriyor olabilirsiniz.

Gereksinimler

Yordam Gerekli başlık
set_unexpected <eh.h>

Daha fazla uyumluluk bilgisi için bkz . Uyumluluk.

Ayrıca bkz.

Özel durum işleme yordamları
abort
_get_unexpected
set_terminate
terminate
unexpected