据我了解,Python 的规范版本是用 C89 编写的。我有兴趣稍后可能会为 Python 编写一些基于 C 的扩展,但我对我应该使用哪个版本的 C 感到有点困惑(在 Python 文档中找不到)。由于 Python 在 C89 中,我应该在 C89 中编码还是 C11 代码也能工作?
最佳答案
自 C89 以来,C 作为一种语言只经历了相对较小的演变。在 C89、C99 和 C11 的交汇处编写代码非常容易,这就是我建议您做的(与其说是为了与 Python 接口(interface),后者更多是在 ABI 级别,不如说是一般源代码级别的最佳实践).
我没想到,通过将自己限制在 C89 中,您失去了 for (int i=0;…)
语法、可变长度数组和复数。
通过为 C99 编写代码,您将失去使用 C89 允许的隐式类型 int
声明变量的能力。这从来都不是一个好主意。
C11 清楚地表明,某些结构在以前的标准中不明确时是被禁止的:INT_MIN % (-1)
, (0,i++,j) + (0,j++, i)
( discussion ; 见评论).
C99 中引入的最有用的补充可能是 C++ 风格的 //
注释。但大多数编译器甚至在 C99 发布之前就已经接受了这些作为扩展,因此没有理由在 2013 年避免使用它们。
关于python - Python 采用什么版本的 C?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16403311/