将 GNU C 编译成 C89

Compiling GNU C into C89

我有一个项目,目标可能是某种类型的嵌入式系统,其编译器可能是 C89 或等效的。但是,我想使用 GNU C 的 GCC 扩展。

有没有办法告诉 GCC 编译成 C89?也许一些 assembly/disassembly 进程?

我不知道 GCC 5 和更高版本,但在 默认 之前实际上是带有 GNU 扩展的 C89。

如果您想明确使用 -std 标志,例如 -std=gnu89

请参阅联机手册中的 Options Controlling C Dialect


如果你想使用 GNU 扩展,那么你必须使用真正支持它们的编译器,比如 GCC。如果您不想使用 GNU 扩展,那么您可以使用任何兼容的编译器。

另请注意,GCC 非常 可移植。虽然更高版本可能不支持您的目标平台,但可能有更早版本支持。

不幸的是,编译为 C89 与带有扩展的 gcc 不同。它们实际上是相互排斥的。

您需要确定您的项目需要哪个,然后如果您真的想坚持使用 C89,请查看 gcc 的 -std=c89(可能还有 -pedantic)选项。如果您想要 GNU 扩展,请查看 gcc 文档,-std= 参数有一组相当广泛的选项。

还有一些 gcc cross-compilers 存在,看看它们是否适合您的嵌入式目标平台,您可能有更简单的方法可用。