And*_*kas 1 c++ linker inline inline-functions
为什么不能在 .cpp 文件中内联函数或类成员函数定义?例如,在我下面的测试示例中,如果我尝试在 cpp 文件中内联函数或类成员定义,链接器会给我一个未定义的引用错误:
测试.h
void print();
class A
{
public:
void print() const;
};
Run Code Online (Sandbox Code Playgroud)
测试.cpp
#include <test.h>
inline void print()
{
// implementation
}
inline void A::print() const
{
// implementation
}
Run Code Online (Sandbox Code Playgroud)
主程序
#include <test.h>
int main(int argc, char** argv)
{
print(); // undefined reference to `print()'
A a;
a.print(); // undefined reference to `A::print() const'
return 0;
}
Run Code Online (Sandbox Code Playgroud)
问)为什么不能在 .cpp 文件中内联函数定义?
您可以在cpp文件中内联函数。
您不能做的是inline从不同的 cpp文件访问这些功能。
一个内联函数必须在出现的每个文件,使用它。这就是为什么它们经常放在头文件中的原因,因此任何需要使用它的源都包含包含它的头文件。
| 归档时间: |
|
| 查看次数: |
2102 次 |
| 最近记录: |