据我所知,Python的规范版本是用C89编写的.我有兴趣可能稍后在Python上编写一些基于C的扩展,但是我对CI应该使用的版本(在Python文档中找不到)感到困惑.由于Python在C89中,我应该在C89中编码还是C11代码也可以工作?
作为一种语言,C语言自C89以来只有相对较小的演变.在C89,C99和C11的交叉点编码很容易,这就是我建议你做的事情(不是用于与Python接口,而是更多的ABI级别,但作为一般的源级最佳实践).
在我的头脑中,通过限制自己到C89,你会失去for (int i=0;…)
语法,可变长度数组和复数.
通过编写C99,您将无法使用int
C89允许的隐式类型声明变量.这从来都不是一个好主意.
C11清楚地表明,当它在以前的标准不明确的部分结构被禁止:INT_MIN % (-1)
,(0,i++,j) + (0,j++,i)
(讨论 ;见注释).
C99中引入的最有用的添加可能是C++风格的//
注释.即使在C99发布之前,最开始的编译器已经接受了这些扩展,因此没有理由在2013年使用它们来避免使用它们.