Aracılığıyla paylaş


_Noreturn anahtar sözcük ve noreturn makro (C11)

anahtar _Noreturn sözcüğü C11'de tanıtıldı. Derleyiciye, uygulandığı işlevin çağırana geri dönmediğini bildirir. 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ğine sahip olmaması gerekir.

Anahtar sözcük genellikle stdnoreturn.hnoreturn dosyasında <sağlanan ve anahtar sözcükle eşlenen kolaylık makrosunda >_Noreturn kullanılır.

(veya eşdeğeri_Noreturn) kullanmanın noreturn birincil avantajları, işlevin amacını kodda gelecekteki okuyucular için net hale getirmek ve istemeden ulaşılamayan kodu algılamaktır.

çağırana değer döndürmediğinden, işaretli 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ük ve eşdeğer _Noreturn makro gösterilmektedirnoreturn.

Yoksayabileceğiniz makroyu E0065 kullanırsanız IntelliSense sahte bir hata noreturnoluş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ü belirtin)
/W4 (Uyarı düzeyini belirtin)
C4702 uyarısı
__declspec(noreturn)