Especificador de función _Noreturn en C

Después de la eliminación de la palabra clave «noreturn», el estándar C11 (conocido como borrador final) del lenguaje de programación C introduce un nuevo especificador de función «_Noreturn» que especifica que la función no vuelve a la función desde la que se llamó. Si el programador intenta devolver cualquier valor de esa función que se declara como tipo _Noreturn, entonces el compilador genera automáticamente un error de tiempo de compilación.

// C program to show how _Noreturn type 
// function behave if it has return statement.
#include <stdio.h>
#include <stdlib.h>
  
// With return value
_Noreturn void view()
{
    return 10;
}
int main(void)
{
    printf("Ready to begin...\n");
    view();
  
    printf("NOT over till now\n");
    return 0;
}

Producción:

Ready to begin...
After that abnormal termination of program.
compiler error:[Warning] function declared 'noreturn' has a 'return' statement
// C program to illustrate the working 
// of _Noreturn type function.
#include <stdio.h>
#include <stdlib.h>
  
// Nothing to return
_Noreturn void show()
{
    printf("BYE BYE");
}
int main(void)
{
    printf("Ready to begin...\n");
    show();
  
    printf("NOT over till now\n");
    return 0;
}

Producción:

Ready to begin...
BYE BYE

Referencia: http://en.cppreference.com/w/c/language/_Noreturn

Este artículo es una contribución de Bishal Kumar Dubey . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *