C++ inline
刚才遇到LNK2019错误,检查半天,什么obj文件的链接顺序啊,LIB文件的路径啊,都没有解决问题
仔细看了一下报错的内容,发现涉及到我写的一个inline函数
然后上网搜了一下关于inline的具体用法,摘自http://www.cnblogs.com/berry/articles/1582702.html
建议把inline函数的定义放到头文件中。在每个调用该inline函数的文件中包含该头文件。这种方法保证对每个inline函数只有一个定义
关键字inline 必须与函数定义体放在一起才能使函数成为内联,仅将inline 放在函数声明前面不起任何作用
而我是这样做的:
在头文件A.h中写上了声明:void func();
在文件A.cpp中写的实现:inline void func() { ... }
很明显问题在哪里了:应该把inline函数的声明和实现都放到A.h中。
建议的做法是:在A.h中,按如下格式书写。虽然写法比较啰嗦,但是这样强调了inline关键字是“实现细节”,是不需要customer programmer关心的,所以inline不用写在函数声明中。
void func();
inline void func()
{
...
}