C - 我使用什么选项来生成列表文件?

his*_*amp 5 c gcc

我是 C 编程语言和 gcc 的新手。

我试图破译一个相当复杂的 C 程序。我想阅读一个有用的列表文件而不是源文件。

我正在寻找由 gcc 编译器创建的列表文件,其中包含:

  1. 所有包含的源代码
  2. 外部参照 = 交叉引用列表
  3. 对变量声明位置的引用。例如,如果该行包含i++;,则i声明一个注释为 are。

我对此进行了搜索,但是 gcc 有很多选项,我迷路了。

如果有更好的地方可以问我的问题,请告诉我。

小智 5

好吧,我是老派,OP 需要的是预处理器输出,是的,它比 IDE 更有启发性。预处理器处理所有 # 语句,例如 #include 和 #ifdef。因此它向您展示了最终成为编译器输入的内容。g++ 手册页解释了 4 个步骤:预处理、编译、汇编和链接

它继续解释说该序列可以在任何时候停止。然后在“预处理器选项”下,解释了控制它的方法。正如另一篇文章所述, -E 可以解决问题,但这只是答案的一部分。为了更好地控制,请使用 -f 系列选项,例如 -fdirectives-only。所以OP想要的是:

    gcc  -E  -fdirectives-only  -o MySrc.lst  MySrc.cpp
Run Code Online (Sandbox Code Playgroud)

对于那些使用 C++ 的人,我建议直接使用 g++:

    g++  -E  -fdirectives-only  -o MySrc.lst  MySrc.cpp
Run Code Online (Sandbox Code Playgroud)

所需的列表位于 MySrc.lst 中


Cha*_*tin 1

你不知道。您使用一个单独进行列表的程序。编译器也必须了解打印,这是愚蠢的。

我推荐a2ps。要进行交叉引用,请查找cxref