制作可移植代码
围绕开源项目大惊小怪,为什么没有一个强大的标准可以使我们制作可移植的代码(我的意思是在C / C ++中而不是Java或者C#中)
每个人都有自己的汤。
甚至还有一些第三方库,例如" Apache Portable Runtime"。
解决方案
回答
我认为,没有任何一个图书馆可以达成共识的主要原因是每个人的需求都不相同。当我们要包装系统库时,经常需要对用例进行一些假设,除非我们想要使包装器庞大且无法使用。我认为这可能是没有单个通用跨平台运行时的主要原因。
对于GUI,原因是每个平台都有自己的UI约定,我们不能编写一个适合所有用户的GUI,而只能得到一个仅适合一个甚至根本不适合的GUI。
回答
是的,没有标准,但是像Qt和boost这样的库可以在进行跨平台开发时使生活变得更加轻松。
回答
有许多库可以使跨平台开发本身更容易,但是为所有平台提供完整的包装最终或者是小型且高度定制化的,或者是大型且完全荒谬的。
得出其逻辑结论,针对操作系统各个方面的完整包装将成为整个虚拟运行时。我们可能还需要编写自己的编程语言。
回答
自适应通信环境(ACE)是一个出色的面向对象框架,为所有低级OS功能(如线程,套接字,互斥体等)提供跨平台支持。它与大量的编译器和操作系统一起运行。
回答
如果我们确定它可以与GCC和MS VC ++一起干净地编译,那么将其移植到其他地方会花费很少的精力。
回答
wxwidgets是大多数窗口管理器的本机GUI小部件上的出色抽象层。
回答
作为语言的C和C ++是标准语言。如果我们在编码时严格遵守他们的规则(这意味着不使用供应商特定的扩展名),那么代码应该是可移植的,并且应该能够在任何OS上使用任何现代编译器进行编译。
但是C和C ++没有像Java或者C#这样的GUI库,但是存在一些免费的或者商业的GUI库,使我们可以编写可移植的GUI应用程序。
我认为最受欢迎的是Qt(商业)和wxWidgets(FOSS)。根据维基百科,还有更多。
还有增强功能,而没有GUI库增强功能确实可以很好地补充C ++的STL。实际上,某些增强库将在下一个C ++标准中添加。