Windows下的C++ 程序移植到linux下

8 篇文章 0 订阅

有时候,需要将原本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类型的文件名,需要改为 std::fstream fw1(nameCodeResultsFile.c_str(), std::ios::out);

8、查找文件代码段中涉及到window下的io.h文件中的查找文件的相关数据类型 _finddata_t 、_findfirst,这些在linux下是不存在的,不能使用

9、wall* pWall;在WIndows下没有问题,但是linux报错,指针必须初始化

10、windows下一个中文字符占2位,linux下一个中文字符占3位,就是在字符串或者数组中占3个位置

 

如有错误,欢迎留言~

  • 7
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值