C++ 跨平台C/C和#x2B的资源+;发展
有哪些资源可以帮助编写跨多个平台和编译器工作的C/C++代码?例如,我经常会问这样的问题:C++ 跨平台C/C和#x2B的资源+;发展,c++,c,portability,C++,C,Portability,有哪些资源可以帮助编写跨多个平台和编译器工作的C/C++代码?例如,我经常会问这样的问题: 在各种编译器和环境中自动定义哪些预处理器宏?(例如,\uuuuugcc\uuuuuuuuuu,WIN32,\uuuuuuuuuu WIN32\uuuuuuuuu,\uuuuuuuuuuuuuuuuuuuuuucygwin) 哪些版本的编译器和标准库支持相对较新的“标准”函数(例如C99长双三角函数sinl()、cosl()、…) 当似乎不存在单一的可移植功能时,在不同的平台上有哪些功能可用于执行典型任务
- 在各种编译器和环境中自动定义哪些预处理器宏?(例如,
,\uuuuugcc\uuuuuuuuuu
,WIN32
,\uuuuuuuuuu WIN32\uuuuuuuuu
)\uuuuuuuuuuuuuuuuuuuuuucygwin
- 哪些版本的编译器和标准库支持相对较新的“标准”函数(例如C99长双三角函数sinl()、cosl()、…)
- 当似乎不存在单一的可移植功能时,在不同的平台上有哪些功能可用于执行典型任务?(例如,以亚秒精度获取当前时间)
编辑:这是我要查找的页面类型的示例:。对各种编译器/环境以及可用于识别它们的预处理器宏的详细介绍。如果能找到一个类似的资源,在没有公共函数存在的情况下比较不同平台上几乎相同的函数(比如Linux中的gmtime\u r()或ftime()与Windows中的gmtime\u s()或ftime()),那就太好了。编写跨平台代码的基本方法是编写不依赖于特定平台的代码。例如,几乎所有原始的UNIX实用程序都可以在不引用特定平台的情况下编写。使用条件编译编写依赖于特定宏的代码不是最佳实践。这实际上取决于您的具体项目,但我会尝试
- 如果可能的话,坚持使用符合ISO标准的代码和POSIX李>
- 使用墙壁并消除所有警告李>
- 查看autoconf和autotoolset,看看它们是否有帮助
- 这里有一个资源可能对您有用遵循C/C++标准
原则上我同意,我会尽可能做到这一点,但在很多情况下,平台之间对于一些低级任务没有共同的功能。例如,如果希望将系统时间精确到毫秒,可以在Linux上使用ftime(),但在Windows上则称为ftime()。另一个例子是,在Linux构建中,您可能希望将默认配置路径设置为~/.myprogram,而在Windows上它应该位于%APPDATA%\myprogram中。如何使用boost和wxWidgets不是编写跨平台兼容代码的策略?这就像是要一些尝起来像葡萄但不全是葡萄的东西。