如果我从 stdin 运行 cpp(GNU C 预处理器)如何设置文件名?
How can I set the file name if I run cpp (GNU C preprocessor) from stdin?
我对 gcc
用于将源代码通过外部预处理器、编译器(正确的)和汇编器(似乎不再这样做)进行管道传输的记忆模糊不清。因此,我希望即使您从 stdin
进行预处理,也可以(仍然)设置 cpp
的文件名。但是我在手册中没有找到任何这样的选项。
请注意,这很重要,因为首先 __FILE__
宏应该扩展为当前文件名(默认情况下 "<stdin>"
),其次预处理器在包含文件名的输出中插入行指令。
虽然不是命令行参数,但您可以在 stdin
前面加上行指令(即 # 1 "<desired-filename>"
行)。因此预处理器将被告知此后的行是所需文件名的第一行。
我对 gcc
用于将源代码通过外部预处理器、编译器(正确的)和汇编器(似乎不再这样做)进行管道传输的记忆模糊不清。因此,我希望即使您从 stdin
进行预处理,也可以(仍然)设置 cpp
的文件名。但是我在手册中没有找到任何这样的选项。
请注意,这很重要,因为首先 __FILE__
宏应该扩展为当前文件名(默认情况下 "<stdin>"
),其次预处理器在包含文件名的输出中插入行指令。
虽然不是命令行参数,但您可以在 stdin
前面加上行指令(即 # 1 "<desired-filename>"
行)。因此预处理器将被告知此后的行是所需文件名的第一行。