将GNU C编译为C89

时间:2016-01-15 09:18:30

标签: c gcc c89

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

有没有办法告诉GCC编译到C89?也许是一些装配/拆卸过程?

2 个答案:

答案 0 :(得分:2)

不幸的是,编译到C89与带扩展名的gcc不一样。它们实际上是互相排斥的。

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

现在还有许多gcc交叉编译器,看看它们是否适合您的嵌入式目标平台,您可以使用更简单的路径。

答案 1 :(得分:0)

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

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

请参阅在线手册中的Options Controlling C Dialect

如果要使用GNU扩展,则必须使用实际支持它们的编译器,如GCC。如果您不想使用GNU扩展,那么您可以使用任何兼容的编译器。

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