亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++調用C函數實例詳解

2020-01-26 14:01:52
字體:
來源:轉載
供稿:網友

C++調用C函數實例詳解

前言:以前見到extern "C"這樣的語句,只是簡單地知道跟外部鏈接有關,但是沒有深刻理解它的意思。

首先,為什么要使用extern "C"修飾符?

C++調用其它語言的函數,由于編譯器生成函數的機制不一樣,所以需要經過特殊處理,才可以調用。調用C語言的函數,需要在函數聲明的地方語句extern "C"。如果不使用該語句,在鏈接的時候,編譯器就會報以下這種錯誤。

Test.obj : error LNK2019: 無法解析的外部符號 "void __cdecl DeleteStack(struct _Node *)" (?DeleteStack@@YAXPAU_Node@@@Z),該符號在函數 _main 中被引用。

然后是如何使用?

應該怎么使用該語句呢?

剛開始,我簡單地在C++源文件的前面使用該語句聲明,但是還是出錯,而且是在編譯階段就報錯。

error C2732: 鏈接規范與“DeleteStack”的早期規范沖突。 

為什么會出現這個錯誤呢?因為C++源文件已經引入了C的頭文件,在頭文件里,聲明該函數時沒有extern修飾,而這里有extern修飾,所以沖突了。解決的辦法有兩個。

一。在C頭文件中加上extern修飾符。

直接加,也不行。因為C源文件也包含了這個頭文件,當編譯C源文件時,就會出現錯誤。所以,需要一種機制來區分是編譯C還是C++文件。方法如下:

#ifdef __cplusplus extern "C" #endif  void DeleteStack(Stack stack); 


因為在編譯C++文件時,自動定義預處理器名字__cplusplus,而編譯C時,沒有該處理器名字。所以只有編譯C++時,才有符號extern “C”。

此外,鏈接指示extern "C"有單個和復合兩種形式。以上為單個形式,復合形式可以同時將幾個函數聲明為extern "C"

extern "C" { void DeleteStack(Stack stack); void PrintStack(Stack stack); void Pop(Stack stack); } 

加上預處理器名字如下:

#ifdef __cplusplus extern "C" { #endif  void DeleteStack(Stack stack); void PrintStack(Stack stack); void Pop(Stack stack);  #ifdef __cplusplus } #endif 

二。編寫一個C++風格的頭文件,在這里添加extern修飾符。

使用方法一,很簡單。但是如果該頭文件是別人寫好,你無法修改。這個時候就要使用其它方法了。方法是定義C++自己的頭文件,文件名為"CStack.h"

// CStack.h extern "C" { #include "Stack.h"; } 

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品成人乱色一区二区| 中文字幕精品av| 97久久精品人人澡人人爽缅北| 国产综合在线观看视频| 日韩一区二区av| 精品中文字幕在线2019| 91精品国产高清久久久久久| 综合av色偷偷网| 欧美日韩视频在线| www国产精品com| 欧美激情一区二区三区在线视频观看| 欧美成人午夜视频| 在线观看日韩视频| 久久好看免费视频| 91精品国产综合久久男男| 国产日本欧美一区| 久久亚洲精品中文字幕冲田杏梨| 亚洲国产精品久久精品怡红院| 亚洲va久久久噜噜噜| 欧美高清在线播放| 国产精品久久久久久久app| 国产成人在线播放| 欧美精品aaa| 欧美大秀在线观看| 国产精品91久久久| 欧美日韩激情小视频| 欧美—级高清免费播放| 国产成人精品一区二区在线| 国内精品中文字幕| 国产精品久久久久久久午夜| 欧美在线视频观看免费网站| 欧美精品久久久久a| 精品国产一区二区三区久久| 久久久免费在线观看| 国产精品扒开腿做爽爽爽视频| 中文字幕国产亚洲2019| 亚洲一区二区三区成人在线视频精品| 欧美日韩在线视频一区二区| 欧美极品美女电影一区| 欧美成人黄色小视频| 欧美视频精品一区| 欧洲成人免费视频| 午夜精品久久久久久久久久久久| 欧美午夜无遮挡| 97**国产露脸精品国产| 亚洲视频一区二区| 国产欧美日韩免费| 亚洲欧美精品suv| 最近免费中文字幕视频2019| 国精产品一区一区三区有限在线| 日本国产一区二区三区| 成人久久一区二区三区| 国内精品久久久久影院优| 91精品国产沙发| 亚洲激情成人网| 国产偷亚洲偷欧美偷精品| 国产精品久久精品| 国产精品久久久久久av下载红粉| 欧美激情第99页| 亚洲成年人影院在线| 欧美性猛交xxxx免费看久久久| 久久好看免费视频| 91久久综合亚洲鲁鲁五月天| 色av中文字幕一区| 亚洲丁香久久久| 日韩专区在线观看| 欧美老女人xx| 欧美激情图片区| 日韩精品免费在线视频观看| 久久亚洲国产精品| 国产亚洲欧洲高清| 国产精品爱久久久久久久| 国产精品免费电影| 国产精品三级网站| 久久久视频免费观看| 深夜精品寂寞黄网站在线观看| 精品偷拍各种wc美女嘘嘘| 国产欧美精品一区二区三区介绍| 亚洲电影免费观看高清完整版在线观看| 久热爱精品视频线路一| 日韩免费观看网站| 成人在线观看视频网站| 国产精品丝袜一区二区三区| 九九热这里只有精品免费看| 欧美精品性视频| 亚洲精品小视频在线观看| 国产日本欧美在线观看| 国产精品国产三级国产aⅴ浪潮| 久久久成人的性感天堂| 黑人极品videos精品欧美裸| 蜜臀久久99精品久久久无需会员| 欧美影院成年免费版| 亚洲高清不卡av| 91视频国产一区| 欧美日韩国产丝袜美女| 久久成人亚洲精品| 最新国产精品拍自在线播放| 国模精品视频一区二区| 色悠久久久久综合先锋影音下载| 国产精品91一区| 日韩久久精品成人| 精品激情国产视频| 国产精品亚洲一区二区三区| 精品性高朝久久久久久久| 欧美性一区二区三区| 精品少妇一区二区30p| 亚洲精品久久久久久久久久久久| 欧美大尺度激情区在线播放| 欧美孕妇性xx| 久久精品国产亚洲| 欧美激情国产精品| 欧美亚洲成人免费| 国模精品一区二区三区色天香| 色偷偷偷亚洲综合网另类| 欧美日韩在线观看视频| 欧洲美女7788成人免费视频| 亚洲成人网在线观看| 最近2019中文字幕mv免费看| 尤物九九久久国产精品的特点| 8x拔播拔播x8国产精品| 亚洲精品电影网在线观看| 欧美成人免费视频| 久久精品一本久久99精品| 国产精品成熟老女人| 日本国产欧美一区二区三区| 5566日本婷婷色中文字幕97| 美女av一区二区三区| 136fldh精品导航福利| 欧美性生交大片免费| 久久亚洲精品网站| 久久男人资源视频| 在线精品视频视频中文字幕| 久久精品国产一区二区电影| 久久久之久亚州精品露出| 欧美成人精品一区| 2019中文字幕在线免费观看| 欧美激情aaaa| 欧美极品少妇xxxxⅹ喷水| 国产精品成人va在线观看| 国产精品视频专区| 国产精品夜色7777狼人| 欧美性猛交xxxx久久久| 黑人巨大精品欧美一区二区| 久久精品成人一区二区三区| 国产精品69精品一区二区三区| 亚洲成人精品视频| 亚洲人成电影网站色www| 亚洲成av人片在线观看香蕉| 国产在线一区二区三区| 中文字幕日韩av电影| 美日韩丰满少妇在线观看| 亚洲国产成人久久综合| 国产亚洲欧美视频| 91久久精品久久国产性色也91| 国产精品成av人在线视午夜片| 国产一区二区丝袜高跟鞋图片| 国产精品嫩草视频| 久久精品美女视频网站| 久久久国产精品免费| 国产精品69久久| 揄拍成人国产精品视频| 日韩成人性视频| 国产综合在线观看视频| 亚洲最大福利网|