据我了解,Python 的规范版本是用 C89 编写的。我可能有兴趣稍后为 Python 编写一些基于 C 的扩展,但我对应该使用哪个版本的 CI 有点困惑(在 Python 文档中找不到)。由于 Python 在 C89 中,我应该在 C89 中编码还是 C11 代码也可以工作?
问问题
442 次
1 回答
5
自 C89 以来,C 作为一门语言只经历了相对较小的演变。在 C89、C99 和 C11 的交集处编写代码非常容易,这就是我建议您做的事情(与其说是与 Python 交互,不如说是在 ABI 级别,而是作为一般源代码级别的最佳实践)。
在我的脑海中,通过将自己限制在 C89 中,你会丢失for (int i=0;…)
语法、可变长度数组和复数。
int
通过为 C99 编写,您将失去使用C89 允许的隐式类型声明变量的能力。这从来都不是一个好主意。
C11 清楚地表明,当某些结构在以前的标准中模棱两可时是被禁止的:INT_MIN % (-1)
,(0,i++,j) + (0,j++,i)
(讨论;见评论)。
C99 中引入的最有用的添加可能是 C++ 风格的//
注释。但大多数编译器甚至在 C99 发布之前就已经接受了这些作为扩展,因此没有理由在 2013 年避免使用它们。
于 2013-05-06T17:05:26.013 回答