gpt4 book ai didi

c++ - GCC 可选预处理器一次输出和编译

转载 作者:太空宇宙 更新时间:2023-11-04 13:20:26 24 4
gpt4 key购买 nike

GCC 的预处理器选项“-H”打印用于 STDERR 的每个头文件的名称。是否可以将此输出转发到一个文件,而不是让它打印到 STDERR,并让 GCC 一步继续编译?

类似于:

gcc -H=file.h -c file.cc

我知道我可以使用 SHELL 技巧来过滤掉这个“-H”输出,但我想避免这种情况。

我只想将“-H”输出写入文件而不是 STDERR。我不在乎这个输出是否由于某种原因必须与其他输出混合/交错,只要“-H”-输出没有污染 STDERR 并且正常的编译/链接警告/错误仍在打印到 STDERR .

虽然 GCC 的开发人员选项“-save-temps”将整个预处理器输出保存到一个文件,但它不会保存“-H”输出。

最佳答案

g++ -save-temps -c file.cc

GCC 的开发者选项“-save-temps”不依赖于 SHELL 技巧,也不会产生不需要的额外 STDERR 输出。相反,GCC 选项会生成两个文件(file.iifile.s),其中 file.ii 包含预处理器输出。

在稍后阶段,例如,独立于构建系统/过程,此 file.ii 可以转换为类似于“-H”的内容-输出会产生。在 csh SHELL 中,您可以使用以下命令(或类似的命令)来实现此转换:

cat file.ii | grep '^#' | awk '{a=$0;gsub(/"/,"",a);split(a,b);if(/\"1/){split(c,d,"");c=d[1 ]". ";print c b[3]}if(/\"2/){split(c,d,". ");c=d[1]""}}' > file.h

关于c++ - GCC 可选预处理器一次输出和编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35537350/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com