Mac 下的一套代码编译不报错,但在 windows 下编译时出错:无法解析的外部符号 或 未知的 #endif。 不同平台下的C++写法要求不同,所以必须严格按照C++标准写代码
SKpacketParser.h 如下
class SKPacketParser
{
public:
SKPacketParser() {};
virtual ~SKPacketParser() {};
public:
virtual int ParsePacket(char* data, int len);
virtual inline int GetHeadLen(const char * data, int len);
virtual inline int GetPacketLen(const char * data, int len);
virtual inline bool CheckHead(const char * data, int len);
};
#endif
解决办法:
内联函数(inline)
内联函数的目的是为了减少函数调用时间。它是把内联函数的函数体在编译器预处理的时候替换到函数调用处,这样代码运行到这里时候就不需要花时间去调用函数。但内联函数有个缺点是它会增加执行文件大小。所以如果不适当的使用内联函数会造成执行文件特别大。
而使用内联函数有以下几点需要注意:
头文件中不仅要包含inline函数的声明,还要包含inline函数的定义
编译器需要把inline函数体替换到函数调用处,所以编译器必