comando cpp en Linux con ejemplos

cpp es el preprocesador del lenguaje C, su compilador C lo usa automáticamente para transformar su programa antes de la compilación. También se denomina macroprocesador porque se usa para dar abreviaturas para la pieza de código más larga. Solo se puede usar con código fuente C, C++ y Objective-C. El uso con otros lenguajes de programación puede causar problemas inciertos.

Sintaxis:

cpp  [-options]  infile  outfile

Algunas opciones importantes:

  • -D nombre : predefine el nombre como una macro.
  • -D nombre=definición : Los contenidos de la definición se tokenizan y procesan como si estuvieran escritos en el propio programa.
  • -U nombre : Cancela cualquier definición anterior de macro.
  • -undef : no predefine ninguna macro específica del sistema o específica de GCC. Las macros predefinidas estándar permanecen definidas.
  • -I dir : agrega el directorio dir a la lista de directorios para buscar archivos de encabezado.
  • -Muro : activa todas las advertencias opcionales que son deseables para el código normal.
  • -Wcomments : advierte cada vez que aparece una secuencia de inicio de comentario /* en un comentario /*, o cada vez que aparece una barra invertida en un // comentario.
  • -Wendif-labels : advierte cuando un #else o un #endif van seguidos de texto.
  • -w : suprime todas las advertencias, incluidas las que GNU CPP emite de forma predeterminada.
  • -M : en lugar de generar el resultado del preprocesamiento, genera una regla adecuada para describir las dependencias del archivo fuente principal.
  • -MM : como -M pero sin mencionar los archivos de encabezado que se encuentran en los directorios de encabezado del sistema.
  • -xc
  • -x c++
  • -x objetivo-c
  • -x ensamblador-con-cpp : Los cuatro anteriores Especifique el idioma de origen: C, C++, Objective-C o ensamblador. Esto no tiene nada que ver con la conformidad con los estándares o las extensiones; simplemente selecciona qué sintaxis base esperar.

Ejemplos: Hemos creado dos códigos para explicar el concepto, los llamaremos code_a.c y code_b.c .

#include
void main()
{
  printf("Hello, World!");
}

code_a.c
#include
void main()
{
   printf(out);
}

code_b.c
  • Usando el comando cpp:

    Dará como resultado la siguiente salida:

    # 1 "code_a.c"
    # 1 ""
    # 1 ""
    # 1 "/usr/include/stdc-predef.h" 1 3 4
    # 1 "" 2
    # 1 "code_a.c"
    # 1 "/usr/include/stdio.h" 1 3 4
    # 27 "/usr/include/stdio.h" 3 4
    # 1 "/usr/include/features.h" 1 3 4
    # 367 "/usr/include/features.h" 3 4
    # 1 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 1 3 4
    # 410 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
    # 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4
    # 411 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 2 3 4
    # 368 "/usr/include/features.h" 2 3 4
    # 391 "/usr/include/features.h" 3 4
    ..........
    .............
    ....................
    # 2 "code_a.c"
    void main()
    {
    printf("Hello, World!");
    
    }
    

    La salida es demasiado grande y en realidad no la necesitamos para entender el concepto. Lo que entendimos es que simplemente llamó y reemplazó todo el código en los archivos de encabezado del programa.

  • usando la opción -D:

    # 1 "code_b.c"
    # 1 ""
    # 1 ""
    # 1 "/usr/include/stdc-predef.h" 1 3 4
    # 1 "" 2
    # 1 "code_a.c"
    # 1 "/usr/include/stdio.h" 1 3 4
    # 27 "/usr/include/stdio.h" 3 4
    # 1 "/usr/include/features.h" 1 3 4
    # 367 "/usr/include/features.h" 3 4
    # 1 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 1 3 4
    # 410 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
    # 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4
    # 411 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 2 3 4
    # 368 "/usr/include/features.h" 2 3 4
    # 391 "/usr/include/features.h" 3 4
    ..........
    .............
    ....................
    # 2 "code_b.c"
    void main()
    {
    printf("Hello, World!");
    
    }
    
    

    Observe que imprime el mismo resultado. Esto se debe a que usó la macro que declaramos en la línea de comando.

  • Usando la opción -M :

    Observó la diferencia. Esto se debe a que solo genera las reglas requeridas para make .

Publicación traducida automáticamente

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