可以将C89代码与C99代码混合使用吗?

时间:2010-12-30 16:27:13

标签: c c99 c89

我对许多与不同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);

提前致谢:)

2 个答案:

答案 0 :(得分:7)

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

如果你可以使你的库的外部头文件适合C89编译器,我没有看到任何明显的原因,为什么它不起作用,除了通常的问题,确保两个编译器可以生成兼容的代码。 / p>

答案 1 :(得分:2)

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