用于跨平台C / C ++开发的资源

时间:2009-06-09 17:04:38

标签: c++ c portability

有哪些资源可以帮助编写跨多个平台和编译器的C / C ++代码?例如,我经常发现自己会问:

  • 在各种编译器和环境中自动定义哪些预处理器宏? (例如__GCC__WIN32__WIN32____CYGWIN__
  • 哪个版本的编译器和标准库支持相对较新的“标准”函数(例如C99长双三角函数sinl(),cosl(),...)
  • 当没有单个便携式功能似乎存在时,在不同平台上可用于执行典型任务的功能是什么? (例如,以亚秒精度获得当前时间)

我经常编写应该在Linux / gcc,cygwin,mingw32和Visual Studio下编译的代码,我经常需要比较来自多个来源(Linux手册页,MSDN,编译器文档)的注释以获取我需要的信息。这一定是开发人员一直遇到的问题 - 有没有资源将这些信息编译成易于理解的参考文献?

(对于这个问题,我对wxWidgets或boost等跨平台库并不特别感兴趣。我对那些可以帮助某人编写自己的跨平台库或程序的资源或技术更感兴趣。)

编辑:这是我正在寻找的页面类型的示例:http://predef.sourceforge.net/precomp.html。对各种编译器/环境以及可用于识别它们的预处理器宏的一个很好的调查。如果不存在常用函数,那么找到一个类似的资源可以很好地比较平台上几乎等效的函数(例如Linux中的gmtime_r()或ftime()与Windows中的_gmtime_s()或_ftime())。

4 个答案:

答案 0 :(得分:3)

以下是您可能使用的一种资源Pre-defined C/C++ Compiler Macros

答案 1 :(得分:1)

编写跨平台代码的基本方法是编写不依赖于特定平台的代码。例如,几乎所有原始UNIX实用程序都可以在不参考特定平台的情况下编写。使用条件编译编写依赖于特定宏的代码不是最佳实践。

答案 2 :(得分:1)

这实际上取决于你的具体项目,但我会尝试

  • 尽可能坚持使用ISO兼容代码和POSIX;
  • 使用-Wall并消除所有警告;
  • 查看autoconf和autotoolset是否可以提供帮助。

答案 3 :(得分:0)