2012-09-19 11 views
5

Ich möchte nur vorverarbeitete Version von file.cc erhalten. Ich habe g++ -E file.cc bekam:g ++ Präprozessor-Ausgabe

# 1 "file.cc" 
# 1 "<command-line>" 
# 1 "file.cc" 

Was habe ich falsch gemacht?

+1

Ihren Beitrag verbessern. Was war in Ihrer Quelldatei usw. –

+4

Die Quelldatei muss leer sein? – trojanfoe

+1

Wir können nicht wissen, was Sie falsch gemacht haben, es sei denn, Sie sagen, was Sie getan haben und was Sie erwartet haben. – tenfour

Antwort

10

wird angenommen, dass die Quelldatei eine einfache Hauptfunktion enthält:

$ cat file.cc 
int main() { 
    return 0; 
} 

Dann mit dem Befehl, den Sie zeigte, sieht die Ausgabe wie folgt aus:

$ g++ -E file.cc 
# 1 "file.cc" 
# 1 "<built-in>" 
# 1 "<command-line>" 
# 1 "file.cc" 

int main() { 
    return 0; 
} 

Die Ausgabe, die in der gezeigt wird, Frage passiert, wenn file.cc leer ist. Beachten Sie, dass "leer" bedeutet, dass die Datei noch Kommentare enthalten kann, oder #ifdef Blöcke mit einer Bedingung, die zu false führt - da der Präprozessor sie ausfiltert, erscheinen sie auch nicht in der Ausgabe.

4

Wenn Sie die Linienmarkierungen nicht wollen, verwenden Sie die Option -P:

-P 
    Inhibit generation of linemarkers in the output from the preprocessor. This might 
    be useful when running the preprocessor on something that is not C code, and will 
    be sent to a program which might be confused by the linemarkers.