有没有办法编译C11到C89?

时间:2013-10-01 16:33:15

标签: c gcc embedded clang

我的一个(嵌入式)目标只有一个C89编译器。

我正致力于一个针对多个设备的(业余爱好)项目。

有没有办法将C11代码库编译(转换?)到C89?

(否则我将不得不按照1989年的字面编码。)

2 个答案:

答案 0 :(得分:9)

不,我不认为所有C11都有可能。 C11具有C89或C99中根本不存在的功能:_Generic_Atomic_Thread_Alignof,在订购前已明确定义,未命名struct和{ {1}}成员......这些版本在旧版本中没有计数器部分,并且很难模拟

对于这些功能中的任何一个,您都必须依赖目标编译器的扩展,因此可能对某个给定编译器的某些功能可能。但是编写这样一个将C89作为通用目标的工具将是一场噩梦。您最好直接实现C11编译器。

答案 1 :(得分:3)

正如Carl Norum评论的那样:

  

你的目标是什么?是否很难移植clang / llvm?

这似乎是很有前景的方法 没有必要移植目标,C89的端口就足够了。

所以clang将你的代码编译成llvm,然后llvm编译成c89,然后就可以了。