我有一本书“Write Portable Code”,其中详细介绍了POSH,一个开源的“框架”(主要只是一个标题),以帮助在不同平台和硬件之间实现C / C ++代码的可移植性。
由于Poshlib现在还没有5年的更新,我想知道那里还有其他类似的库/框架吗?
答案 0 :(得分:4)
对于C代码,GLib是一个现代的跨平台(非GUI)库,可以轻松编写在许多不同平台上运行而无需更改源代码的应用程序。作为GNOME项目的一部分,GLib以开放的方式积极开发,许多开源项目使用它。
对于C ++,我建议查看Boost库。
答案 1 :(得分:3)
亲爱的毛茸茸青蛙,
虽然我对你的处理仍然很感染,但我必须说这是一个毛茸茸的问题。这就是原因。我每天都在使用boost库。他们太棒了,让无数的任务变得更容易。但我必须强调,如果你使用它们,你需要使用一个分析器。它的一些非常好的部分往往有点慢,你应该在使用某些部分之前阅读最佳实践,例如转换迭代器。不过,Boost值得一提,因为它确实提供了一些非常强大的抽象,这些抽象在++ cverse中几乎是陌生的。
然而,Boost和其他像这样的框架并不是snakeoil。他们摇滚。摇滚的人使用它们。摇滚乐的人。对于更专业的任务,我需要了解有关您的问题域的更多信息。然而,另外一个非常出色的工具是SWIG,它可以让你将任何大量可移植的C代码捆绑到一个可以访问的库中。
至于膨胀,当C ++ 0x移动到标准时,很多东西会消失,这要归功于可变参数模板和许多类似的聪明才智。老实说,我已经厌倦了人们大吼大叫模板的恐怖。也许六年前,由于编译器支持不佳,他们很危险,但是现在,他们是语言的一部分。它们生活在您触摸的几乎所有通用代码之下。像我们说的那样,像CLang这样的项目正在敲打最后的钉子到这个棺材里。他们不再是一种时尚。它们不是一个神奇的解决方案。没有人仍然这么认为。无论如何,你不应该聘请任何人。
未来的方法。你需要一个Boost吗?
答案 2 :(得分:0)
大多数在其名称中使用流行语“可移植性框架”或“便携式运行时”的库都是无用的膨胀和蛇油。如果您想编写可移植代码,请从相关标准开始并遵循它们。请阅读ISO C或C ++标准或POSIX标准,而不是阅读供应商的手册页或标准库函数的帮助文件。等等。
除了高度残缺的嵌入式系统(注意:许多/大多数嵌入式系统不属于“高度残缺”类别)和DSP,几乎任何环境都可以与POSIX一致。比在各种不兼容的底层系统之上设计或找到新的“可移植性框架”更好的方法是评估完成工作所需的POSIX部分,可能缺少哪些部分或在系统上不符合要求您对此感兴趣,是否有丢失或损坏功能的替代或替代方法。
对于大多数人来说,唯一相关的非POSIX系统是Windows。 Cygwin是使Windows符合POSIX的一个重量级选项,但是如果您编写一个更具包容性的POSIX子集,您可以使用更轻的解决方案并仍然支持Windows。
答案 3 :(得分:0)
sourceforge上有类似的Predef项目,但多年来也没有更新。
答案 4 :(得分:0)
FWIW,这些预定页面得到了积极维护,并在过去几年中不断更新。
答案 5 :(得分:0)
除了所有C ++程序员都应该熟悉的Boost之外,还有一些值得关注的库。 STLSoft是第一个出现在我脑海中的人。
答案 6 :(得分:0)
我已经在我的个人网站上为C和C ++准备了a list of some prominent portability libraries。可以根据知识共享署名许可条款自由重复使用。我对Qt,GLib和Apache Portable Runtime有一些经验,而且它们似乎都很好。