我对许多与不同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);
提前致谢:)
答案 0 :(得分:7)
C语言没有说C89和C99代码的二进制兼容性。这完全取决于您用于可执行文件不同部分的编译器。
如果你可以使你的库的外部头文件适合C89编译器,我没有看到任何明显的原因,为什么它不起作用,除了通常的问题,确保两个编译器可以生成兼容的代码。 / p>
答案 1 :(得分:2)
而不是#ifdef C99
,请使用#if __STDC_VERSION__ > 199900L
或类似内容。