如果我从 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>" 行)。因此预处理器将被告知此后的行是所需文件名的第一行。