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

标签 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);

提前致谢:)

最佳答案

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

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

关于c - 可以将 C89 代码与 C99 代码混合使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4564314/

相关文章:

c - 初始化为空字符串的字符数组元素的值

c - main 函数和之后的变量

C90 和类型定义

c - strtok crash 不知道为什么会被窃听

c - Memset 或 for 循环将多个相同长度的数组归零

c - 在接收消息时继续使用 select() 计算超时?

将字符串数组字符转换为数字

c - 在 POSIX 中将整数值转换为 void* 并再次返回是否总是安全的?

c - C 中的结构实际上如何与 malloc 一起工作

C99:我可以在 'for' 中的 block 开头声明变量吗?