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_unexpected
olarak verilen son işlevi çağırır.
çağrısı set_terminate
tarafı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 unexpected
terminate
yerine 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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin