Macros predefinidas en C con ejemplos

Según el estándar C89, el lenguaje de programación C tiene las siguientes macros predefinidas:

  1. Macro __LINE__ : La macro __LINE__ contiene el número de línea actual del programa en la compilación. Da el número de línea donde se llama. Se utiliza para generar declaraciones de registro, mensajes de error, generar excepciones y códigos de depuración. Cada vez que el compilador encuentra un error en la compilación, primero genera el número de línea en el que ocurrió el error usando __LINE__ e imprime el mensaje de error junto con el número de línea para que el usuario pueda corregir fácilmente ese error.

    C

    #include <stdio.h>
    int main()
    {
        printf("Line number is: %d\n",
               __LINE__);
        return 0;
    }
    Producción:

    Line number is: 5
    
  2. Macro __FILE__ : La macro __FILE__ contiene el nombre del archivo del programa que se está ejecutando actualmente en la computadora. También se utiliza para depurar, generar informes de errores y mensajes de registro.

    C

    #include <stdio.h>
    int main()
    {
        printf("File name of this"
               " program is: %s\n",
               __FILE__);
        return 0;
    }
    Producción:

    El nombre de archivo de este programa es: /usr/share/IDE_PROGRAMS/C/other/703ad0b087fbd7d18cde5ea81f148f36/703ad0b087fbd7d18cde5ea81f148f36.c

  3. __DATE__ Macro : __DATE__ macro da la fecha en la que el código fuente de este programa se convierte en código objeto. En pocas palabras, devuelve la fecha en la que se compiló el programa. La fecha tiene el formato mmm dd aaaa . mmm es el nombre del mes abreviado.

    C

    #include <stdio.h>
    int main()
    {
        printf("Program Compilation Date: %s\n",
               __DATE__);
        return 0;
    }
    Producción:

    Program Compilation Date: Dec 26 2019
    
  4. __TIME__ Macro : __DATE__ macro da la hora en que se compiló el programa. El tiempo tiene el formato hora:minuto:segundo .

    C

    #include <stdio.h>
    int main()
    {
        printf("Time of compilation is: %s\n",
               __TIME__);
        return 0;
    }
    Producción:

    Time of compilation is: 13:17:20
    
  5. __STDC__ Macro : __STDC__ Macro se utiliza para confirmar el estándar del compilador. Generalmente tiene el valor 1, lo que significa que el compilador cumple con el estándar ISO C.

    C

    #include <stdio.h>
    int main()
    {
        printf("Compiler Standard Number: %d\n",
               __STDC__);
        return 0;
    }
    Producción:

    Compiler Standard Number: 1
    
  6. Macro __STDC__HOSTED : esta macro tiene el valor 1 si el objetivo del compilador es un entorno alojado. Un entorno alojado es una instalación en la que un tercero mantiene los datos de compilación y ejecuta los programas en sus propias computadoras. Generalmente, el valor se establece en 1.

    C

    #include <stdio.h>
    int main()
    {
        printf("STDC_HOSTDED Number: %d\n",
               __STDC_HOSTED__);
        return 0;
    }
    Producción:

    STDC_HOSTDED Number: 1
    
  7. __STDC_VERSION__ : esta macro contiene el número de versión de C Standard en el formato aaaammL , donde aaaa y mm son el año y el mes de la versión estándar. Esto significa a qué versión del estándar C se ajusta el compilador.
    Values hold by __STDC_VERSION__
    • El valor 199409L significa el estándar C89 modificado en 1994. Este es el estándar predeterminado actual.
    • El valor 199901L significa el estándar C99
    • El valor 201112L significa la revisión de 2011 del estándar C

    Estos valores estándar se cambian cuando se requiere que el usuario use la función o el archivo de encabezado en el estándar C89 que se elimina en el estándar C99. El compilador cambia su estándar de ejecución y ejecuta la salida.

    Consulte este artículo que cambia el estándar para ejecutar la función asctime_s() declarada en el estándar C89.

    C

    #include <stdio.h>
    int main()
    {
        printf("Compiler Standard "
               "VERSION Number: %ld\n",
               __STDC_VERSION__);
        return 0;
    }
    Producción:

    Compiler Standard VERSION Number: 201112
    
  8. Macros predefinidas en el estándar C99:

  9. __cplusplus : __cplusplus La macro se define cuando se usa el compilador de C++. Se usa para probar si un encabezado es compilado por un compilador de C o un compilador de C++. Esta macro proporciona un valor similar a __STDC_VERSION__, ya que se expande a un número de versión.
    Values hold by __cplusplus
    • 199711L para el estándar C++ de 1998
    • 201103L para el estándar C++ de 2011
    • 201402L para el estándar C++ de 2014
    • 201703L para el estándar C++ de 2017
  10. __OBJC__ Macro: : __OBJC__ Macro tiene valor 1 si el compilador Objective-C está en uso. __OBJC__ se usa para probar si un compilador de C o un compilador de Objective-C compila un encabezado.

Referencias: https://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html

Publicación traducida automáticamente

Artículo escrito por avsadityavardhan 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 *