C编译器支持生成带有.i
扩展名的预处理器输出文件。
据我所知,这适用于 Microsoft (Visual Studio)、ARM、Keil 和一些 GNU 编译器。
他们通常使用编译器开关-E
或-P
为此。
还有-C
用于保留注释的编译器开关。
预处理器文件的创建是 ANSI-C 中的标准,还是这个编译器特定的?
选项-C
也是标准吗?
编辑:
更准确地说:这是关于对.i
文件创建的支持,而不是编译器开关语法或名称。
C编译器支持生成带有.i
扩展名的预处理器输出文件。
据我所知,这适用于 Microsoft (Visual Studio)、ARM、Keil 和一些 GNU 编译器。
他们通常使用编译器开关-E
或-P
为此。
还有-C
用于保留注释的编译器开关。
预处理器文件的创建是 ANSI-C 中的标准,还是这个编译器特定的?
选项-C
也是标准吗?
编辑:
更准确地说:这是关于对.i
文件创建的支持,而不是编译器开关语法或名称。
它在 ISO C 标准中没有标准化。
然而,大多数编译器似乎都-E
可以生成 prepro 输出。这是合理的,因为 prepro 输出通常对调试非常有用。
这是我检查过的编译器列表:
所有这些编译器都允许将 prepro 输出写入任何文件(具有任何扩展名)。.i
绝对不是标准的。
保留评论的选项-C
似乎相当具体。
C 编程语言标准没有指定关于如何调用编译器的任何内容。
它可能是一个“临时”标准,但它不是“全球”以任何官方方式控制的东西。有本地标准,例如POSIX,可以指定这些内容,但这当然不会涵盖为非 POSIX 环境实现的编译器。