例如,如果我用 C 或 C++ 编写:Windows。是否保证我可以在任何其他操作系统(如 Mac OS、Linux、类 Unix 系统)上编译和运行它?那么,这是否意味着 C 或 C++ 是跨平台语言?
4 回答
如果您编写的 C 或 C++ 程序严格遵守某些标准,那么该程序应该可以在任何提供符合该标准的工具链的平台上运行。从这个意义上说,C 和 C++ 是跨平台语言。
不......有许多许多平台的 C 和 C++ 编译器,但不同的编译器有自己的怪癖,并且它们链接到的库在不同的平台上完全不同。Mozilla 制定了使用哪些功能以及避免哪些功能以使您的软件跨平台的指南。
像 cygwin 这样的环境有助于在 windows *nix 中实现跨平台兼容性。
您可以编写标准 C 的库,这些库不依赖于非常可移植的平台库
如果您直接访问任何 Windows API,它将无法在其他平台上运行(甚至编译)。如果您使用间接访问正确 API 的标准函数,或者如果您添加#ifdef 保护并访问正确的平台 API,那么答案会更好。前者应该是跨平台的。后者将在您的代码迎合的平台上工作。
对于 Mac OSX、Linux,当然还有 Windows,您可以编写和编译 C++。根据个人经验,我一直认为 Windows 最适合 C++ 的使用,紧随其后的是 Linux,Max OSX 远远落后。根据我的经验,编译器往往是喜怒无常的,或者是因为支持社区更适合 Windows 上的 C++,或者因为它自然更适合编程,所以我在使用 Windows 时遇到的问题总是较少。尽管我将它标记为第二名,但我在 Linux 方面没有太多经验。
编辑:你说“保证”运行和编译。对于基本的 C++ 来说,情况确实如此,但一些更高级的功能可能会在不同平台上提供不同的支持。