Quel est le sens des lignes commençant par un dièse et le nombre comme " # 1 “un.c” est dans le ccag préprocesseur de sortie?
J'ai imprimer la sortie du préprocesseur C en utilisant
gcc -E a.c
La sortie contient beaucoup de lignes comme
# 1 "a.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "a.c"
# 1 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/stdio.h" 1 3
# 19 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/stdio.h" 3
# 1 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/_mingw.h" 1 3
# 31 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/_mingw.h" 3
# 32 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/_mingw.h" 3
# 20 "c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/stdio.h" 2 3
Je n'ai jamais vu ce genre de syntaxe dans la C. quelqu'un Peut m'expliquer ce que c'est en train de faire?
- Comment se débarrasser d'eux: stackoverflow.com/questions/2946898/...
Vous devez vous connecter pour publier un commentaire.
Ces lignes sont des indices pour le débogage (où le code suivant de la ligne sont en fait issus d')
Sens des drapeaux (séparés par un espace):
Ces linemarkers sont mentionnés dans
man gcc
pour-P
option.La
-P
option est plus particulièrement destiné à se débarrasser de ces lignes pour plus de clarté:Voir une documentation détaillée (réponse avant).
Ceux qui sont de la synchronisation des lignes directives, qui permettent
gcc
à donner les bons messages d'erreur pour les erreurs dans#include
d fichiers. D'autres préprocesseurs (commeyacc
/bison
) utiliser le même mécanisme pour rapporter C erreurs à corriger les lignes de l'entrée.y
fichier.bison
dégage de la#line
les directives de préprocesseur....