2012-09-19 44 views
5

Deseo obtener solo la versión preprocesada de file.cc. Hice g++ -E file.cc, obtuve:g ++ salida del preprocesador

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

¿Qué hice mal?

+1

Mejorar su puesto. ¿Qué hay en su archivo de origen, etc. –

+4

El archivo de origen debe estar vacío? – trojanfoe

+1

No podemos saber qué hizo mal a menos que diga lo que hizo y lo que esperaba que sucediera. – tenfour

Respuesta

10

supone que el archivo de origen contiene una sencilla función principal:

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

Luego, con el comando que mostró, la salida es el siguiente:

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

int main() { 
    return 0; 
} 

La salida que se muestra en la la pregunta ocurre cuando file.cc está vacío. Tenga en cuenta que "vacío" significa que el archivo aún puede contener comentarios, o #ifdef bloques con una condición que se evalúa como falsa: dado que el preprocesador los filtra, tampoco aparecen en la salida.

4

Si no desea que los marcadores de línea, utilice la opción -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. 
Cuestiones relacionadas