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