我对与不同C规范相关的许多事情都有疑虑。 如果我在C99中编写一个库,我能否从C89代码中使用它?(仅使用具有符合C89定义的函数)。 例如,这段代码是否可在C89中使用? 共享库的头文件: #ifdef C99 void func (double complex a, double complex b); // C99 function #endif/* 另一个符合C89的函数 */ void func2 (double a, double b); 谢谢!
C语言并没有关于C89和C99代码二进制兼容性的规定,这完全取决于您为可执行文件使用不同部分的编译器。 如果您可以让库的外部标头对C89编译器友好,我认为它应该可以工作,除了通常需要确保两个编译器可以生成兼容代码的问题。
#define C99
,应该就可以了。请参考 https://dev59.com/P3I95IYBdhLWcg3w3iDG - BoltClock