是否所有的c++代码(完全相同)将编译和工作相同的Windows系统以及基于Linux的系统?,为什么?[c++] [R

Does all c++ code(exactly the same) will compile and work the same on Windows system as well as Linux Based system? and Why?[in c++] [RBIx]

本文关键字:系统 c++ 为什么 Linux 代码 工作 是否 编译 Windows      更新时间:2023-10-16

到目前为止,我已经成功地在windows和基于Linux的系统中使用代码块编译相同的代码!到目前为止没有任何错误,但我只是一个c++初学者,我的程序很简单,所以我不能弄清楚它!所以我想也许我可以从你那里得到它,伙计们!

是否所有的c++代码(完全相同)将编译和工作相同的Windows系统以及基于Linux的系统?,为什么?

如果你的回答是:是的,他们做

  • 为什么相同的c++程序在不同的版本(Windows版本和Linux版本)?

如果你的回答是:不,他们不该

  • 为什么?哪些代码可以在windows上运行而不能在Linux上运行,反之亦然?

  • 是否有任何c++代码来查找它是否在windows上运行还是基于Linux的系统?

  • 是否所有的c++代码(完全相同)将编译和工作相同MAC系统和Linux系统?

感谢阅读

如果你想让它在两个不同的操作系统上编译,那么c++代码必须满足许多要求:

    你的代码是否使用了特定于操作系统的库?这些代码不能在不同的平台上编译。你的编译器是否在OS A上提供适当的扩展来支持OS B库?

最好的方法是避免这两种情况。另一个问题是:

  • OS A上的编译器是否使用与OS B上编译器相同的c++标准版本?

如果你在A操作系统上使用C++14的特性和C++14支持的编译器,但B操作系统上的编译器不支持它,它根本不会编译。

为什么相同的c++程序在不同的版本(Windows版本和Linux版本)?

因为如果没有一些额外的库或编译器扩展,c++标准不提供有关操作系统的信息。您在代码中使用的字符串解析也可能存在一些差异,例如在打开文件或写入文件时。

为什么?哪些代码可以在windows上运行而不能在Linux上运行,反之亦然?

为什么会这样,见上文。只有使用完全相同的c++标准而没有任何操作系统特定方面的代码才能在不同的操作系统上编译。您可以使用有条件编译的代码

是否有任何c++代码来查找它是否在windows上运行还是基于Linux的系统?

编译器应该提供预先设置的宏来检查目标操作系统(见上面的链接)

是否所有的c++代码(完全相同)都能在相同的环境下编译和工作MAC系统和Linux系统?

不,绝对不是所有的原因。

已经有了一些答案,但是还有比系统库更细微的区别。我首先想到的是行尾。Windows使用rn,而linux只使用n。如果您使用例如std::endl,您将得到正确的行结束。但是,一旦您想要在linux中读取在windows中编写的文件,或者反之亦然,这可能会出现问题。类似地,windows使用作为文件夹的分隔符,而linux使用/

我并不是说这将是将代码从linux移植到windows或反之亦然的主要障碍。关键是:代码可能会编译,甚至可能没有错误地运行,但当它在linux上测试但在windows上运行时,它可能不会像预期的那样工作(反之亦然)。好的方面是c++为您提供了编写代码所需的一切,这些代码原则上应该能够在windows和linux上运行。

不一定。它们是两个不同的操作系统,因此它们都有特定于系统的库。如果您的代码是一个简单的代码,带有linux和Windows中都存在的库,那么很好,代码将在两个系统上运行。
另一方面,例如,如果您的代码包含与操作系统本身一起工作的库,则库所做的系统调用是不同的。Windows使用的Windows API在Linux系统上无法运行。

答案:看情况!

如果您的代码包含对系统文件(例如:windows dll)的引用,那么它将无法在不同的系统(例如:linux系统)上编译。如果您的代码不引用系统文件,那么它将在任何系统上编译。