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()

{

     ...

}

原文地址:https://www.cnblogs.com/qrlozte/p/4337436.html