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.h> dosyasında <sağlanan ve anahtar sözcükle eşlenen kolaylık makrosunda noreturn_Noreturn kullanılır.

(veya eşdeğerinoreturn) 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österilmektedir_Noreturn.

Yoksayabileceğiniz makroyu noreturn kullanırsanız IntelliSense sahte bir hata E0065oluş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)