Programme main.c

int main(int argc, char* argv[])
{
    return 0;
}

Pré-compilation (affichage à l'écran): gcc -E main.c

# 1 "main.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "main.c"
int main(int argc, char* argv[])
{
 return 0;
}

Programme main2.c avec un #define

#define EXIT_SUCCESS 0
int main(int argc, char* argv[])
{
    return EXIT_SUCCESS;
}

Résultat avec gcc -E main2.c

# 1 "main2.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "main2.c"

int main(int argc, char* argv[])
{
 return 0;
}

Note: la définition EXIT_SUCCESS a été remplacée par le pré-processeur.

Programme main3.c avec un #include

Le fichier main3.h contient 2 lignes:

#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1
#include <main3.h>

int main(int argc, char* argv[])
{
    return EXIT_SUCCESS;
}

Résultat avec gcc -E main3.c

# 1 "main3.c"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "main3.c"

# 1 "main3.h" 1
# 3 "main3.c" 2
int main(int argc, char* argv[])
{
 return 0;
}

Explication des numéros:

La ligne [#1 "main3.h" 1] indique qu'on doit entrer (le deuxième 1) dans le fichier "main3.h" à partir de sa première ligne (premier 1).

La ligne [#3 "main3.c" 2] indique qu'on doit retourner (le 2) dans le fichier "main3.c" à la ligne 3.

S'il y a plus de 7 lignes vides consécutives (vide ou commentaire), une ligne # NUMEROLIGNE "fichier.c" apparaîtra. Il s'agit d'un saut pour le compilateur. Sinon, chaque ligne vide du fichier principal sera affichée avec -E.

Notes

EXIT_SUCCESS = 0 et EXIT_FAILURE = 1 sont définies dans les fichiers /usr/include/stdlib.h ou /usr/include/c++/4.1/cstdlib et doivent être inclus avec un #include.

les macros

On peut afficher les macros définies dans un .c à l'aide de la commande: gcc -E -dM nomprogramme.c. On peut aussi enlever les macros GNU à l'aide de gcc -E -dM -undef nomprogramme.c