自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何調(diào)用C++函數(shù)?

開發(fā) 后端
下面文章主要介紹下如何在C++程序中調(diào)用C++ 函數(shù),其困難不在于語言本身,而在于熟悉函數(shù)和調(diào)用方法的理解。

在C++的語言中,和一些程序設計語言中,可以將一段經(jīng)常需要使用的代碼封裝起來,在需要使用時可以直接調(diào)用,這就是程序中所謂的函數(shù),下面就對C++中的如何調(diào)用C++函數(shù)問題進行說明。

前陣子被問及一個在 C 中如何調(diào)用C++ 函數(shù)的問題 ,當時簡單回答是將函數(shù) 用extern "C" 聲明,當被問及如何將類內(nèi)成員函數(shù)聲明時,一時語塞,后來網(wǎng)上查了下,網(wǎng)上有一翻譯C++ 之父的文章可以作為解答,遂拿來Mark 一下。

C++ 函數(shù)聲明為 ``extern "C"'' (在你的 C++ 代碼里做這個聲明),然后調(diào)用它(在你的 C 或者 C++ 代碼里調(diào)用)。例如:

  1. // C++ code:   
  2.  
  3. extern "C" void f(int);   
  4.  
  5. void f(int i)   
  6.  
  7. {   
  8.  
  9.      // ...   
  10.  
  11. }   

當然,這招只適用于非成員函數(shù)。如果你想要在 C 里調(diào)用成員函數(shù)(包括虛函數(shù)),則需要提供一個簡單的包裝( wrapper )。例如:

  1. /* C code: */   
  2.  
  3. void f(int);   
  4.  
  5. void cc(int i)   
  6.  
  7. {   
  8.  
  9.     f(i);   
  10.  
  11.    /* ... */   
  12.  
  13.      }   

然后,你就可以這樣調(diào)用 C::f() :

  1. // C++ code:   
  2.  
  3. class C   
  4.  
  5. {   
  6.  
  7.        // ...   
  8.  
  9.        virtual double f(int);   
  10.  
  11. };   
  12.  
  13.     
  14.  
  15. extern "C" double call_C_f(C* p, int i) // wrapper function   
  16.  
  17. {   
  18.  
  19.        return p->f(i);   
  20.  
  21. }   

如果你想在 C 里調(diào)用重載函數(shù),則必須提供不同名字的包裝,這樣才能被 C 代碼調(diào)用。例如 :

  1. /* C code: */   
  2.  
  3. void f_i(int);   
  4.  
  5. void f_d(double);   
  6.  
  7.     
  8.  
  9. void cccc(int i,double d)   
  10.  
  11. {   
  12.  
  13.        f_i(i);   
  14.  
  15.        f_d(d);   
  16.  
  17.        /* ... */   

然后,你可以這樣使用每個重載。

【編輯推薦】

  1. C與C++中標準輸入實現(xiàn)方式上的一點區(qū)別
  2. C++編譯器如何對Const常量進行分配存儲空間
  3. C++類庫設計的基本構思與方法
  4. 玩轉C++語言的幾種方法
  5. 如何更好的進行C++代碼編制
責任編輯:chenqingxiang 來源: NET130
相關推薦

2023-11-09 23:31:02

C++函數(shù)調(diào)用

2010-01-21 11:23:58

C++函數(shù)調(diào)用

2011-08-22 17:25:31

LuaC++函數(shù)

2010-01-20 14:25:56

函數(shù)調(diào)用

2021-10-11 11:53:07

C++接口代碼

2010-01-28 10:49:22

C++構造函數(shù)

2010-01-25 09:50:58

C++函數(shù)對象

2011-08-22 17:13:00

LuaC++函數(shù)

2011-07-20 16:09:08

C++

2019-08-28 14:21:39

C++C接口代碼

2020-07-31 18:33:56

C++編程語言

2010-01-25 14:00:27

C++類

2010-01-20 17:48:07

C++ 函數(shù)重載

2010-02-04 17:16:33

C++調(diào)用python

2010-01-27 17:16:52

C++構造函數(shù)

2010-01-25 14:43:00

C++構造函數(shù)

2011-08-25 16:47:53

LuaC++ 證書

2010-01-26 10:42:26

C++函數(shù)

2010-01-20 14:35:55

C++調(diào)用

2010-01-18 16:56:30

C++函數(shù)
點贊
收藏

51CTO技術棧公眾號