有没有办法编译C11到C89?

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

我正在开发一个针对多个设备的(业余爱好)项目。

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

(否则我将不得不像1989年那样编码,字面意思。)

不,我不认为所有C11都有可能。 C11具有在C89或C99中根本不存在的function: _Generic_Thread_Thread_Alignof ,在订购之前定义良好的定义,未命名的structunion成员……这些在旧版本中没有计数器部件,并且真的很难模仿

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

正如Carl Norum评论的那样:

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

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

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