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?
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?
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.
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.
Mejorar su puesto. ¿Qué hay en su archivo de origen, etc. –
El archivo de origen debe estar vacío? – trojanfoe
No podemos saber qué hizo mal a menos que diga lo que hizo y lo que esperaba que sucediera. – tenfour