shongshi
隨筆 - 13, 文章 - 0, 評論 - 3, 引用 - 0
數據加載中……
關于extern "C"
用C++進行開發,尤其涉及到開發dll模塊時,我們發現頭文件中經常定義為
#ifdef __cplusplus
extern
"
C
"
{
#endif
#ifdef __cplusplus
}
;
#endif
這樣做有什么好處呢?
我們知道,C++會對函數內部命名,比如說void f(int x,int y),如果通過C編譯器編譯,則生成的函數名字為f,如果通過C++編譯器編譯,則內部函數名會改編,例如
@@f@_int@int
...(只是便于舉例),所以,如果用c++編譯的dll,在C中無法調用,因為找不到對應的函數。
為了解決該問題,于是引入extern “C”,這樣C++編譯器在碰到extern “C”聲明的函數時,會采用C編譯方式編譯。這樣編譯后的dll,無論在C中還是C++中均可以使用。不過因為C不對函數名字進行改編,所以無法支持函數重載。此外,如果需要導出類,則也沒法聲明為extern "C",因為C語言中不支持類,導出類的時候extern “C” 無意義。
說到這,提一下后綴名如何影響編譯,如果后綴名為cpp,在不加extern “C”的情況下采取c++編譯方式,名字會改編,如果后綴名為c,則采取c編譯方式。
經常有人問,C++調用C文件時,為什么老是編譯和連接出錯?這個問題也在于編譯方式不同,函數名字不同,找不到對應的函數,所以出錯了。所以,C++中要引入c編譯的模塊,記得在對應的頭文件中加入上述代碼就可以了。
posted on 2009-04-12 01:18
五味雜陳
閱讀(340)
評論(0)
編輯
收藏
引用
所屬分類:
C++
只有注冊用戶
登錄
后才能發表評論。
【推薦】100%開源!大型工業跨平臺軟件C++源碼提供,建模,組態!
網站導航:
博客園
IT新聞
BlogJava
博問
Chat2DB
管理
Powered by:
C++博客
Copyright © 五味雜陳
導航
C++博客
首頁
新隨筆
聯系
聚合
管理
<
2009年7月
>
日
一
二
三
四
五
六
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
常用鏈接
我的隨筆
我的評論
我參與的隨筆
留言簿
(1)
給我留言
查看公開留言
查看私人留言
隨筆分類
.NET(3)
(rss)
C++(1)
(rss)
Oracle(7)
(rss)
設計模式(1)
(rss)
心情隨筆(2)
(rss)
隨筆檔案
2009年7月 (2)
2009年6月 (3)
2009年5月 (3)
2009年4月 (5)
搜索
最新評論
1.?re: oracle em如何登錄orcl以外的數據庫?[未登錄]
check file "portlist.ini"
--eric
2.?re: 不知道C++為什么要引入虛擬繼承和多繼承
我也覺得沒有邏輯
--welld_djj
3.?re: .net中裝箱的幾種情況
高!
--亨德列克
閱讀排行榜
1.?Oracle忘記密碼怎么辦?(2297)
2.?C#中的繼承與覆蓋(1786)
3.?.net中裝箱的幾種情況(1772)
4.?Equals方法的實現(參見《Microsoft.net框架程序設計》并提出少許建議)(1551)
5.?oracle em如何登錄orcl以外的數據庫?(1420)
評論排行榜
1.?不知道C++為什么要引入虛擬繼承和多繼承(1)
2.?.net中裝箱的幾種情況(1)
3.?oracle em如何登錄orcl以外的數據庫?(1)
4.?oracle em中設置首選身份證明(0)
5.?要學習Oracle了(0)
亚洲欧美成人综合久久久
|
一本大道久久香蕉成人网
|
久久综合香蕉国产蜜臀AV
|
99久久精品毛片免费播放
|
国产精品九九久久精品女同亚洲欧美日韩综合区
|
国内精品久久久久久久久
|
久久综合九色综合网站
|
久久国产精品成人免费
|
一本久久知道综合久久
|
久久久噜噜噜久久
|
国产精品99久久久久久www
|
久久久亚洲裙底偷窥综合
|
色综合合久久天天给综看
|
国产午夜精品久久久久九九电影
|
亚洲国产成人精品91久久久
|
亚州日韩精品专区久久久
|
国内精品久久久人妻中文字幕
|
久久国语露脸国产精品电影
|
99久久综合狠狠综合久久
|
2021国产精品午夜久久
|
99久久精品国产毛片
|
精品无码久久久久久国产
|
国产精品免费福利久久
|
无码人妻久久一区二区三区免费丨
|
久久精品国产一区二区三区
|
亚洲国产成人久久笫一页
|
A级毛片无码久久精品免费
|
久久精品蜜芽亚洲国产AV
|
久久精品国产69国产精品亚洲
|
久久婷婷激情综合色综合俺也去
|
午夜精品久久久久9999高清
|
激情综合色综合久久综合
|
久久亚洲欧美日本精品
|
久久久网中文字幕
|
久久久久人妻一区精品
|
国产高潮久久免费观看
|
久久99国产一区二区三区
|
久久综合久久性久99毛片
|
久久影院久久香蕉国产线看观看
|
久久人妻少妇嫩草AV蜜桃
|
性做久久久久久久久老女人
|