_Noreturn
anahtar sözcük ve noreturn
makro (C11)
anahtar _Noreturn
sözcüğü C11'de tanıtıldı. Derleyiciye uygulandığı işlevin çağırana dönmediğini söyler. Derleyici, bir _Noreturn
işlev çağrısından sonra gelen koda ulaşılamediğini bilir. Döndürmeyen bir işleve örnek olarak abort işlemi verilmiştir. Denetim akışının çağırana geri dönme olasılığı varsa, işlevin _Noreturn
özniteliği olmamalıdır.
Anahtar sözcüğü genellikle anahtar sözcükle eşlenen stdnoreturn.h> dosyasında <sağlanan kolaylık makrosunda noreturn
_Noreturn
kullanılır.
(veya eşdeğerinoreturn
) kullanmanın _Noreturn
birincil avantajları, işlevin amacını gelecekteki okuyucular için kodda net hale getirmek ve istenmeyen şekilde ulaşılamayan kodu algılamaktır.
çağırana değer döndürmediğinden, işaretlenmiş noreturn
bir işlev dönüş türü içermemelidir. void
olmalıdır.
Makro ve _Noreturn
anahtar sözcük kullanma noreturn
örneği
Aşağıdaki örnekte anahtar sözcüğü ve eşdeğer noreturn
makro gösterilmektedir_Noreturn
.
Yoksayabileceğiniz makroyu noreturn
kullanırsanız IntelliSense sahte bir hata E0065
oluşturabilir. Bu, örneği çalıştırmanızı engellemez.
// Compile with Warning Level4 (/W4) and /std:c11
#include <stdio.h>
#include <stdlib.h>
#include <stdnoreturn.h>
noreturn void fatal_error(void)
{
exit(3);
}
_Noreturn void not_coming_back(void)
{
puts("There's no coming back");
fatal_error();
return; // warning C4645 - function declared with noreturn has a return statement
}
void done(void)
{
puts("We'll never get here");
}
int main(void)
{
not_coming_back();
done(); // warning c4702 - unreachable code
return 0;
}
Gereksinimler
Makro | Gerekli başlık |
---|---|
noreturn |
<stdnoreturn.h> |
Ayrıca bkz.
/std (Dil standart sürümünü belirt)
/W4 (Uyarı düzeyini belirtin)
C4702 uyarısı
__declspec(noreturn)
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