为了减少代码跨平台移植工作量,在windows或Linux下进行代码编写时整理了以下注意事项。
说明:以下所说的在linux平台下,都是只通过g++或gcc来编译,所说的编译问题,对于高版本的编译器是可以编译通过,以下规范只针对通常情况或为了更好的兼容性。
1.头文件包含
如果头文件的父级目录有明显区分的名称,不是直接在"include"目录下,包含头文件不要直接只写头文件本身,父目录需要带上。
例如
头文件"a.h"在目录"dir1/dir2/a.h",包含头文件时至少包含到"dir2/a.h"
不这样做的缺点
移植时配置包含路径时会需要写很多项包含路径。
2.使用标准库最好加上std
使用标准库最好加上std,如果cpp或头文件中使用了标准库,但未加std,在文件头部需要加上using namespace std。
不这样做的缺点
移植过程会导致很多编译不过,需要在文件头部加using namespace std或在使用标准库类或函数前加std。
3.容器嵌套右侧需要加空格
容器嵌套的,右侧需要加空格。
例如
std::map<std::vector<int> >
不这样做的缺点
对于高版本的编译器来说不加空格可能会编译通过,对于低版本的就无法编译通过。为了更好的兼容性,最好加上空格。
4.include时注意文件名称大小写
包含时注意文件名称大小写,与实际文件名称需保持一致。
不这样做的缺点
linux平台下包含头文件的名称时区分大小写的,包含路径中的名称与实际不一致时无法编译通过。
5.包含头文件杜绝使用符号“\”
包含头文件有多级路径时,斜杠应该使用“/”。
不这样做的缺点
linux平台无法识别符号“\”。
6.函数接口参数是引用时,不要直接传入构造参数
函数接口参数是引用时,不要直接传入构造参数,需要另外定义一个l临时变量再传进去。
例如
#函数定义
void function(const std::string &am