我能否在任何平台上运行C和C++?

5

如果我使用C或C++编写程序,例如在Windows上。那么是否保证我可以在其他操作系统(如Mac OS、Linux、类Unix系统)上编译和运行它?这是否意味着C或C++是跨平台语言?


6
这取决于您将使用的库。 - noko
1
https://dev59.com/BXA75IYBdhLWcg3wy8Ui - jonvuri
严格来说,C和C++并不在任何平台上“运行”。它们只是可以编译成可运行程序的语言。 - phuclv
4个回答

16

如果您编写的 C 或 C++ 程序严格符合某个标准,那么该程序应该可在任何提供遵循该标准的工具链的平台上运行。从这个意义上说,C 和 C++ 是跨平台语言。


5
我认为需要明确的是,程序中许多想要做的事情可能需要使用不支持跨平台的库,因此在选择库时必须慎重考虑。 - Michael Petrotta
11
根据你精挑细选用词的能力,你会是一个出色的律师。 - jonathan.cone
所以,如果我在不同的操作系统上运行两个相同的编译器,那么它应该可以工作,而不受操作系统的影响,对吧? - user963241
2
@user963241 只有在使用两个平台都可用的一组库和(重要的是)系统API时,才能实现跨平台。如果您想在Windows或Mac OS上编写“本地”应用程序,则必须使用其他平台上不容易获得的API。 - dmckee --- ex-moderator kitten
我的回答重点是,虽然它所说的内容严格属实,但是精心措辞的一系列条件使其对于典型的现实应用程序并不是非常有用。编写有用的现实应用程序很难严格遵守在广泛平台上可用的任何标准。几乎在任何现实应用程序中都需要针对不同平台进行某种调整。 - David Schwartz

4
没有......有很多平台都有C和C ++编译器,但不同的编译器有自己的怪癖,并且它们链接到的库在各个平台上完全不同。Mozilla有一个指南,介绍要使用哪些功能、避免哪些功能,以使您的软件具有跨平台性。

像cygwin这样的环境可以帮助实现在Windows * nix中的跨平台兼容性。

您可以编写标准C库,没有依赖于平台库的依赖关系,这将非常可移植。


2

如果你直接访问任何Windows API,它将无法在其他平台上运行(甚至无法编译)。如果你使用间接访问正确API的标准函数,或者添加#ifdef保护并访问正确的平台API,则答案更好。前者应该是跨平台的。后者将适用于你的代码所服务的平台。


-1

对于Mac OSX、Linux和当然的Windows,你可以编写和编译C++。从个人经验来看,我发现Windows对于C++的使用最容易,其次是Linux,而Max OSX则远远落后。根据我的经验,编译器往往比较难以处理,要么是因为Windows上的C++支持社区更好,要么是因为它自然更适合编程,我总是遇到更少的问题。虽然我把它标记为第二名,但我在Linux方面没有那么多的经验。

编辑:你说“保证”运行和编译。对于基本的C++来说,这肯定是正确的,但一些更高级的功能可能在不同的平台上有不同的支持。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接