我有一个项目,其中目标可能是某种类型的嵌入式系统,其编译器可能是C89或同等的。但是,我想使用GNU C的GCC扩展。
有没有办法告诉GCC编译到C89?也许是一些装配/拆卸过程?
答案 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 非常可移植。虽然更高版本可能不支持您的目标平台,但可能还有早期版本。