C++中内联函数inline的另一作用
C++中内联函数inline的另一作用
内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。
今天在coding时遇到多次定义一个函数而使ld返回错误的情况。大致过程如下:
首先,在一个头文件中定义了一个类及其实现:
test.h:
- #ifndef TEST_H
- #define TEST_H
- class A{
- public:
- void fun();
- };
- void A::fun(){
- }
- #endif
然后分别有两个文件:
a.cpp:
- #include"test.h"
- void tt()
- {
- }
b.cpp:
- #include<iostream>
- #include"test.h"
- using namespace std;
- void tt();
- int main()
- {
- A a;
- tt();
- return 0;
- }
而后,将a和b分别编译之后就会出错:
想了想,是由于分开后在a.o和b.o中都分别定义了A的fun()函数,因此会发生冲突。
|
评论暂时关闭