歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> 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()函數,因此會發生沖突。

Copyright © Linux教程網 All Rights Reserved