我正在阅读的一本书建议在他们打算使用的机器上编译程序,以确保没有任何问题。我想学习C的一个重要原因是因为它(可以)与所有操作系统兼容。我在linux上使用这个。如果在预期的机器上编译程序不是一个选项,是否有一个程序可以遵循以确保程序运行完美,无论它运行的是什么版本的linux / bsd?就像用于不同O / S以及不同架构的兼容功能的婴儿床单,以及如何处理每个差异以确保兼容性?
答案 0 :(得分:2)
使用旨在跨平台工作的库。如果您确实需要执行任何与平台相关的操作,则必须编写代码,以满足您希望应用程序运行的所有体系结构/平台。
特定平台将#define X
确定代码是否运行,因此您可以#ifdef X
检查特定平台,然后在该语句中编写代码,对每个位执行相同操作平台特定代码。
答案 1 :(得分:1)
您对源兼容性和二进制兼容性感到困惑。二进制文件绝对不是可移植的,这与编程语言无关。例如,在BSD上编译的二进制文件永远不会在linux上运行,因为所有的系统调用都有不同的数字和约定。
如果仔细编写,C代码应该是可移植的并且与各种操作系统兼容。您只需在目标的每个平台上单独编译它。
答案 2 :(得分:0)
我会参考以下几个链接来获取一些基本信息
答案 3 :(得分:0)
标准C是可移植的,但与所有语言一样,内存管理之外的任何内容以及语言不再包含的非常基本的库都不可移植。
即使在Java中也存在这个问题,因为假设您想要做一些看似便携的东西(比如将控制台窗口的颜色设置为绿色或红色)是不可能的。
总的来说,示例书C往往是非常便携的,或者是非常小的修复程序(例如进行显式转换)。