我知道java是独立于平台的,而c ++是依赖的。我想知道我是否在Windows中编写了一个C ++程序,我可以以某种方式获得相同的程序在不同的操作系统上运行而无需重写整个事情。请记住我是编程新手。
答案 0 :(得分:2)
是!
任何合理不错的C ++程序员,没有特定理由,都会编写符合标准且可移植的代码。
这些必然的特定于平台的交互(例如文件系统访问和网络)应该在一层第三方库代码(例如Boost)背后抽象,该代码在许多平台上具有相同的实现。特定于平台的因素(如不同的整数类型宽度)可以在编译器后面抽象出来(对于内置类型)。
这样,相当不错的C ++程序员的代码不会在不同的平台上改变。
有时很难使代码完全可移植,但这是目标,一般来说,它绝对可以实现并且是正确的事情。
但是,您通常需要为每个目标平台重新编译代码,因为处理器和操作系统差异很大,并且使用机器代码编写的程序(这是您的可执行文件)便携式是另一个鱼。
答案 1 :(得分:-1)
Google的原生客户端(NaCl)与Technical Overview - Google Chrome一样,是您所询问的一个示例。见Portability;它说"将C / C ++源代码编译成便携式bitcode可执行文件(pexe)"。
可移植性通常不是由语言决定的,而是由编译器和相关的运行时提供的。