我可以将自己的程序挤在预处理器和编译器之间吗?

发布于 2024-09-29 12:20:52 字数 189 浏览 5 评论 0原文

这是一个愚蠢的问题,还是我可以指定 g++ 在预处理器和编译器之间使用程序?

或者,我知道我可以只在文件上运行预处理器(因此是所有文件)。然后我猜测有一个开关可以只运行编译器。所以我可以手动调用这两个并将我的程序放在中间。如果是这样,我如何仅运行编译器(和链接器?)?

我宁愿选择第一种方法,因为我们的构建者可能不同意我的观点:)。

Is this a stupid question, or can I specify g++ to use a program between the preprocessor and compiler?

Alternatively, I know that I can just run the preprocessor on a file (hence all the files). Then I am guessing there is a switch to run only the compiler. So I can manually invoke these two and put my program between. If so, how do I run compiler (and linker?) only?

I'd rather prefer the first method as our builder would probably not agree with me :).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

掀纱窥君容 2024-10-06 12:20:52

要运行替代预处理器,手册页建议使用 -no-integrated- cpp-B

我对此没有经验,所以我建议您阅读手册页中的相关部分。


或者,您可以通过告诉 g++ 该语言是“预处理的 C++”来运行编译器,而无需调用预处理器:

g++ -x c++-cpp-output

g++ 还会将后缀为 .ii 的文件识别为预处理的 C++,因此管道变为:

source.cpp -> source.ii: g++ -o source.ii -E source.cpp
source.ii -> source.custom.ii: <custom step>
source.custom.ii -> source.o: g++ -o source.o -c source.custom.ii
source.o -> source: g++ -o source source.o

To run an alternative preprocessor, the man page suggests using -no-integrated-cpp and -B.

I have no experience with these, so I suggest you read the relevant parts in the man page.


Alternatively, you can run the compiler without invoking the preprocessor by telling g++ that the language is "preprocessed C++":

g++ -x c++-cpp-output

g++ will also recognize files with the suffix .ii as preprocessed C++, so the pipeline becomes:

source.cpp -> source.ii: g++ -o source.ii -E source.cpp
source.ii -> source.custom.ii: <custom step>
source.custom.ii -> source.o: g++ -o source.o -c source.custom.ii
source.o -> source: g++ -o source source.o
仲春光 2024-10-06 12:20:52

查看 -Xpreprocessor 选项,这允许您定义新的预处理器解释

Look at the -Xpreprocessor option, this allows you to define new pre-processor interpretations

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文