有没有办法编译C11到C89?
我的一个(嵌入式)目标只有一个C89编译器。
我正在开发一个针对多个设备的(业余爱好)项目。
有没有办法在C89中编译(转换?)C11代码库?
(否则我将不得不像1989年那样编码,字面意思。)
不,我不认为所有C11都有可能。 C11具有在C89或C99中根本不存在的function: _Generic
, _Thread
, _Thread
, _Alignof
,在订购之前定义良好的定义,未命名的struct
和union
成员……这些在旧版本中没有计数器部件,并且真的很难模仿 。
对于任何这些function,您必须依赖目标编译器的扩展,因此可能对某个给定编译器的某些function可能。 但是编写这样一个将C89作为通用目标的工具将是一场噩梦。 您最好直接实现C11编译器。
正如Carl Norum评论的那样:
你的目标是什么? 是否很难移植clang / llvm?
这似乎是有前景的方法。
没有必要移植目标,C89的端口就足够了。
所以clang将你的代码编译成llvm,然后将llvm编译成c89然后你就可以了。