Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / C++中内联函数inline的另一作用

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