有时候,需要将原本Windows下成功运行的C++代码移植到linux系统下,过程往往不是特别顺利,下面列出几个移植过程中需要注意的几个问题
1、#include<windows.h> 非win平台不能使用
2、#pragma once 避免同一个文件被包含多次,可移植性不好,linux下就会报错,还有一种相同功能的 是#ifndef是通用的,具体用法如下
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
//中间为函数声明
#endif
ps:防止重复包含的两种方法
#pragma once 是编译相关,就是说这个编译系统上能用,但在其他编译系统不一定可以,也就是说移植性差,不过现在基本上已经是每个编译器都有这个定义了。
#ifndef,#define,#endif用来防止某个宏被多次定义。
3、二维verctor< vector<int>>,WIndows下可以,但是linux下必须改为 > >,中间多一个空格
4、 #include "stdafx.h" <direct.h>在linux下出错
5、#include <io.h> 出错 no such file ,解决方法 改为#include <sys/io.h>即可
6、#include <windef.h>,出错 no such file,该文件是宏定义相关文件,直接注释掉会造成min或者max等函数出出错,解决方法,改为include <algorithm>
7、std::fstream fw1(nameCodeResultsFile, std::ios::out);其中 nameCodeResultsFile 是一个string类型的文件名,需要改为&nb