Windows转Linux注意事项

1.        整形变量定义不许使用long、long long等其长度与系统有关的变量,应使用int64、int32等等。

2.        字符数组定义原则上使用ACE_TCHAR,不使用char,也不使用TCHAR。

3.        字符串操作函数只能使用ACE_OS域下的函数,例如,不能直接使用strncpy,应使用ACE_OS::strncpy(…)等等。ACE_OS下没有的函数,不许使用。如atoi,strlwr,strupr等函数只在Windows系统下又,在Linux下没有,在ACE_OS命名空间中也没有,不许使用。

4.        原则上不能直接调用操作系统的API,如Sleep、CreateThread、CreateDirectory等等。应该使用ACE_OS::sleep(…)。

5.        文件操作应使用ACE_FILE,直接用fopen在移植到64位时可能存在问题。

6.        禁止直接使用printf打印输出信息,输出信息到屏幕应使用ACE_DEBUG,ACE_ERROR等等方式,使用ACE_DEBUG时,应严格区分信息的等级,如错误等级、通知等级等等。具体写法请遵照日志输出规范文档。

7.        使用断言优先使用ACE_ASSERT。

8.        禁止使用WindowsAPI GetPrivateProfilexxx等操作ini配置文件,默认通过ACE库中的方法操作ini文件。

9.        所有导出函数都应用extern “C”进行声明。

10.    编写的dll中原则上,不出现DLLMain函数。

11.    文件路径操作的分隔符默认为”/”,原则上不使用”\\”,目前Windows对两种斜杠都识别,但是Linux文件路径只识别”/”。

12.    包含文件#include后的文件名必须与真实的文件名大小写完全一致。

13.    在void*指针和其他类型强制转换时,应该增加dynamic_cast,static_cast,reinterpret_cast等标记。

14.    不应假定指针类型变量的长度为4字节,在32位系统,其长度为4字节,但在64位系统时,其长度为8字节。void指针类型默认使用intptr_t,或者uintptr_t

15.    所有头文件中都需要#ifdef #else #endif 防止重复包含。

16.    所有注释默认都写在代码行的上面,而不是写在代码行的后面。

17.    所有Hash表默认用Hash.h实现实现或者ACE库中的Hash表,不再引入外面其他类别的Hash表。

18.    所有链表默认用SzlList.h模板实现或者ACE库中的链表,不再引入外面其他类别的链表。

19.    所有线程的实现,默认都使用ACE_Task实现。

20.    DLL动态加载用ACE_DLL相关类完成。

21.    进程创建和管道通信用ACE_PROCESS相关类完成。

22.    for循环的控制变量应该在for循环前面定义,禁止for(intI = 0; i<xx; i++)这种类型的代码。

23.    提交的文件必须在Windows、Linux都能编译通过(必要时32位、64位都要能通过),除MFC界面程序外,提交程序时,应一并提交Linux下的Makefile文件。

24.    除了Windows MFC界面程序外,禁止使用MFC类库,包括CString、LPCTSTR等等Windows特有的数据类型。

25.    内部通信SOCKET方式,默认采用STP,不再编写单独的Socket程序。

26.    Release、Debug两个版本的工程设置是否齐全,输出到代码框架的bin目录下

27.    Debug的输出默认要带'd'

28.    Release版本引用的Lib不能出现Debug版本的,Debug版本引用的Lib不能出现Release版本的

运行时库Debug选择Debug MultiThreaded DLL,Release版本选择Release MultiThreaded DLL
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值