Visual Studio 2015 <=> QtCreator 5 (c++) 代码可移植性

Visual Studio 2015 <=> QtCreator 5 (c++) code portability

我在 Visual Studio 2015 年工作,并使用 std:: 库以及 "nullptr"、"initializer list"s 和 [= 等 c++11 功能创建了一些项目23=] 关键字。我也是用"stdafx"预编译的header。我使用的 std:: 组件是:<vector>, <string>, <chrono>, <stdio>, <iomanip>, <iostream>, <fstream>, <strsafe>, <math.h>, <thread>, <mutex>, <ctime>

我将在不久的将来为其他人(可能不使用 VS2015 的人)提供我的 .h 和 .cpp 代码,但有一些问题:

1) 在开始向他们提供我的代码之前,我应该准备哪些东西?
2) 如果希望我的代码以后在Linux环境(使用QtCreator)中正常工作,我应该注意什么?
3)我提到的这些库,如果我使用它们并且我希望我的代码可移植到 linux 和 windows 版本的 QtCreator C++11 环境,这是否一切正常(兼容 && 可移植) ?
4) 什么是错误的,我还应该记住什么?

QtCreator 不是 linux 环境,它是一个可移植的。如果您的项目是基于 Qt 的,您可以安装 Qt SDK 的 mingw 版本,它包括 Creator 允许(大部分)在 linux 平台上模拟其模拟的使用。

可移植性不是由 IDE 定义的,而是由您使用的工具链、编译器、库、make 实用程序定义的。

您列出的那些名称是头文件,而不是库。

ISO C++ 包含兼容编译器应支持的头文件列表。您可以在这里查看它们:

http://en.cppreference.com/w/cpp/header

因此math.h不是C++头文件,替换为<cmath>strsafe是Microsoft头文件,在其他平台上没有任何模拟,应该替换它的用法。

如果项目打算在不同的平台上构建,并且不可能在两个平台上以相同的方式实现其所有功能,您应该考虑使用能够为特定平台配置项目的工具链。例如,cmake.