C 编译器预处理器输出

标签 c compiler-construction c-preprocessor

C编译器支持生成扩展名为.i的预处理器输出文件。
据我所知,Microsoft (Visual Studio)、ARM、Keil 和一些 GNU 编译器都是如此。

他们通常为此使用编译器开关 -E-P
还有编译器开关 -C 来保留注释。

预处理器文件的创建是 ANSI-C 中的标准,还是特定于此编译器?
选项 -C 也是标准吗?

编辑:
更准确地说:这是关于支持创建 .i 文件,而不是编译器开关语法或名称。

最佳答案

它没有在 ISO C 标准中标准化。

然而,大多数编译器似乎都有 -E 用于生成预编译输出。这是合理的,因为 prepro 输出通常对调试非常有用。

这是我检查过的编译器列表:

  • 海湾合作委员会
  • 个人电脑
  • clang
  • ctc(三核)
  • 任务 C166
  • 风河 (戴铂)

所有这些编译器都允许将 prepro 输出写入任何文件(具有任何扩展名)。 .i 绝对不是标准的。

用于保留注释的选项 -C 似乎相当具体。

关于C 编译器预处理器输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17081405/

相关文章:

windows - Windows GCC 和 MSVC 编译器的编译时间比较

c++ - Variadac 宏将宏应用于所有参数

c - 如何修复 sprintf 错误

compiler-construction - 函数式语言的编译器后端

c - 如何在 memcpy 之前 malloc 结构数组

c - 如何定义一个模式,该模式将等同于 Flex 中扫描仪无法识别的所有标记?

c - '\' 在 C 中实际上做了什么?

c - 在 C 中获取内置参数

c - 在结构错误中指向取消引用(间接需要指针操作数)

c - `asprintf` 是线程安全的吗?