前言
本文记录一下在编写RPC项目时遇到的一些问题。
CMake
aux_source_directory(. SRC_LIST)
add_library(mprpc SHARED ${SRC_LIST})
因为设置的是当前目录下所有cpp文件都设置成一个环境变量SRC_LIST,当我新创建一个.cpp文件时候,这个CMake并没有进行改变,bulid里面用来帮助的文件就没有更新,也就检测不到新创建的.cpp文件了。
静态成员变量
当声明一个静态成员变量时候一定要在类外定义一下,定义之后才会设定内存
。
头文件里面函数定义
写的时候不小心在头文件中多写了个类的构造函数的实现就导致我遇到函数重定义这样的错误
。
因为在头文件中定义了一个函数,在预处理时头文件展开,每个文件都有了一个该函数的定义,因为编译时是分隔的,所以到链接时,将所有文件关联在一起时,发现每个包含了该头文件的文件中有一个相同函数的声明,编译器就会报出重定义的错误。
读取文件每行的最后部分有\n
windows每行最后有个\r\n,linux每次换行所以最后都有个\n.除非是最后一行结束的时候没有换行,文件结束最后的字符为eof,值对应-1,这是asc码中没有的特殊值
string的有参构造传char*这种char类型数组遇到\0就不再往后读了。(\n是有效的有参构造字符)