c - 添加编译阶段

标签 c gcc compiler-construction icc

我需要调试一个包含很多宏的 C 代码,其中有很多宏都不是微不足道的,它们包括几行(很多行)。这使得调试变得不可能,因为宏是在一行中展开的,你永远不知道错误来自哪里。另一方面,使用 sed 可以轻松获取预处理器输出并在每个分号后添加行。

我不会讨论使用此类宏的良好做法,因为我对此无能为力。但我想知道我是否可以在预处理和编译之间向编译器添加一个阶段(我使用多个编译器:icc、gcc、xlc),因此我运行了 sed 命令。

最佳答案

你可以做的是只运行预处理器(-E):

 $ g++ -E in.c -o in.i

然后运行您的 sed 脚本并使用 g++ 编译它的输出(这次没有 -E)。我敢肯定,您可以在 Makefile 中构建执行所有这些操作的规则。

关于c - 添加编译阶段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15905004/

相关文章:

c - null 和 NULL ,有什么区别吗?

c - 同时使用两个 scanf(%s) 有什么问题

c - 如何在没有得到编译警告的情况下表达 wait(NULL)?

c++ - 符号可见性和命名空间

c - 查找线程堆栈大小

c - 为什么有人会使用 gboolean (GLib) 而不是 bool 类型?

c++ - 重用编译器前端的结果来加速多种配置/平台的 C++ 代码编译

compiler-construction - 是否有使用严格求值的 Haskell 编译器或预处理器?

c - tinyc 编译器 - libtcc,如何绑定(bind)检查?

performance - 空白何时会影响性能?