成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

在C中引用C++語言中的函數(shù)和變量

開發(fā) 后端
經(jīng)過長時間學習引用C++語言,于是和大家分享一下,看完本文你肯定有不少收獲,希望本文能教會你更多東西。學習引用C++語言時,你可能會遇到引用C++語言問題,這里將介紹XX問題的解決方法,在這里拿出來和大家分享一下。

引用C++語言的頭文件需添加extern "C",但是在C語言中不能直接引用聲明了extern "C"的該頭文件,應(yīng)該僅將C文件中將C++中定義的extern "C"函數(shù)聲明為extern類型,希望本文能教會你更多東西。

實際上,在連接階段,連接器會從模塊A生成的目標文件moduleA.obj中尋找_foo_int_int這樣的符號!加extern "C"聲明后的編譯和連接方式加extern "C"聲明后,模塊A的頭文件變?yōu)椋?/P>

  1. // 模塊A頭文件 moduleA.h  
  2. #ifndef MODULE_A_H  
  3. #define MODULE_A_H  
  4. extern "C" int foo( int x, int y );  
  5. #endif 

在模塊B的實現(xiàn)文件中仍然調(diào)用foo( 2,3 ),其結(jié)果是:
(1)模塊A編譯生成foo的目標代碼時,沒有對其名字進行特殊處理,引用C++語言的方式;
(2)連接器在為模塊B的目標代碼尋找foo(2,3)調(diào)用時,尋找的是未經(jīng)修改的符號名_foo。如果在模塊A中函數(shù)聲明了foo為extern "C"類型,而模塊B中包含的是extern int foo( int x, int y ) ,則模塊B找不到模塊A中的函數(shù);反之亦然。

所以,可以用一句話概括extern “C”這個聲明的真實目的(任何語言中的任何語法特性的誕生都不是隨意而為的,來源于真實世界的需求驅(qū)動。我們在思考問題時,不能只停留在這個語言是怎么做的,還要問一問它為什么要這么做,動機是什么,這樣我們可以更深入地理解許多問題): #t#

實現(xiàn)C++與C及其它語言的混合編程。明白了C++中extern "C"的設(shè)立動機,我們下面來具體分析extern "C"通常的使用技巧。
.extern "C"的慣用法
(1)在C++中引用C語言中的函數(shù)和變量,在包含C語言頭文件(假設(shè)為cExample.h)時,需進行下列處理:

  1. extern "C"  
  2. {  
  3. #include "cExample.h"  

而在C語言的頭文件中,對其外部函數(shù)只能指定為extern類型,引用C++語言中不支持extern "C"聲明,在.c文件中包含了extern "C"時會出現(xiàn)編譯語法錯誤。筆者編寫的C++引用C函數(shù)例子工程中包含的三個文件的源代碼如下:

  1. /* c語言頭文件:cExample.h */  
  2. #ifndef C_EXAMPLE_H  
  3. #define C_EXAMPLE_H  
  4. extern int add(int x,int y);  
  5. #endif  
  6. /* c語言實現(xiàn)文件:cExample.c */  
  7. #include "cExample.h"  
  8. int add( int x, int y )  
  9. {  
  10.  return x + y;  
  11. }  
  12. // c++實現(xiàn)文件,調(diào)用add:cppFile.cpp  
  13. extern "C"   
  14. {  
  15.  #include "cExample.h"  
  16. }  
  17. int main(int argc, char* argv[])  
  18. {  
  19.  add(2,3);   
  20.  return 0;  

如果C++調(diào)用一個C語言編寫的.DLL時,當包括.DLL的頭文件或聲明接口函數(shù)時,應(yīng)加extern "C" { }。(2)在C中引用C++語言中的函數(shù)和變量時,C++的頭文件需添加extern "C",但是在C語言中不能直接引用聲明了extern "C"的該頭文件,應(yīng)該僅將C文件中將C++中定義的extern "C"函數(shù)聲明為extern類型。

責任編輯:chenqingxiang 來源: 博客園
相關(guān)推薦

2010-01-25 17:05:37

C++語言

2010-01-18 13:54:28

函數(shù)

2011-12-25 15:35:05

ibmdwJavaC++

2010-01-15 19:17:48

C++語言

2024-01-09 09:23:12

指針C++

2023-11-22 13:22:51

C++函數(shù)

2010-01-21 15:48:38

C++語言

2010-01-25 10:25:19

C++變量

2011-03-30 11:01:13

C語言隨機

2024-01-18 10:27:30

C++引用函數(shù)

2023-12-29 08:27:36

C語言靜態(tài)變量開發(fā)

2010-01-26 10:42:26

C++函數(shù)

2010-01-27 17:16:52

C++構(gòu)造函數(shù)

2010-01-28 11:08:09

C++變量

2011-07-20 15:58:53

C++引用

2010-01-19 13:43:59

C++函數(shù)

2024-01-05 08:31:08

C語言

2010-01-26 15:51:06

C++變量

2022-07-26 00:36:06

C#C++函數(shù)

2021-10-14 15:34:48

C語言字符串函數(shù)
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 97免费在线观看视频 | 精品日韩一区 | 中文字幕日韩一区 | 精品产国自在拍 | 91精品国产欧美一区二区成人 | 日本一区二区三区精品视频 | 97精品超碰一区二区三区 | 免费午夜电影 | 麻豆精品国产91久久久久久 | 欧美一区二区三区的 | 午夜精品久久久久久 | 日本久久久一区二区三区 | 精品av久久久久电影 | 青青艹在线视频 | 999久久久国产精品 欧美成人h版在线观看 | 一级片在线视频 | 国产91精品久久久久久久网曝门 | 日本久久久一区二区三区 | 91视频在线 | 精品国产视频 | 大学生a级毛片免费视频 | 天天曰天天曰 | 亚洲精品国产成人 | 日韩在线免费视频 | 激情 一区 | 高清欧美性猛交 | 成人免费视频网站 | 日日夜夜精品免费视频 | 亚洲精品99| 国产人免费人成免费视频 | xxx国产精品视频 | 国产精品99久久久久久人 | 精品国产一级 | 在线91 | 欧美a在线观看 | 在线亚洲电影 | 国产精品国产三级国产aⅴ中文 | 偷拍自拍第一页 | 久久久久久国产精品免费免费 | 亚洲精品乱码 | 久久99精品国产自在现线小黄鸭 |