8

我对与不同 C 规范相关的许多事情有疑问。

如果我用 C99 编写一个库,我可以从 C89 代码中使用它吗?(仅使用符合 C89 定义的函数)。

例如,这段代码可以在 C89 中使用吗?

共享库的标头:


#ifdef C99
 void func (double complex a, double complex b); // C99 function
#endif

 /* another C89 compliant function */
 void func2 (double a, double b);

提前致谢 :)

4

2 回答 2

8

C 语言没有说明 C89 和 C99 代码的二进制兼容性。这完全取决于您用于可执行文件不同部分的编译器。

如果您可以使库的外部头文件适合 C89 编译器,我看不出有任何明显的原因导致它无法工作,除了确保两个编译器可以生成兼容代码的常见问题。

于 2010-12-30T16:46:27.410 回答
2

而不是#ifdef C99,使用#if __STDC_VERSION__ > 199900L或类似的。

于 2010-12-30T17:18:12.733 回答