Re: [問題] 外部函數使用時機

看板C_and_CPP作者 (ashin)時間16年前 (2009/11/02 16:11), 編輯推噓6(609)
留言15則, 6人參與, 最新討論串3/3 (看更多)
※ 引述《bzgibson (B'z)》之銘言: 我想我來回答一下第一個問題, 我想請問一下外部函式的使用時機? 如果你想寫一個Function供其它人使用,甚至放諸四海皆準, 那你就必需使用外掛函式. 如何開始撰寫外掛函式? 如果你手邊剛好有Visual C++的話,照下的步驟你就可以得到一個很好的範例: File->New->(Project)Win32 Dynamic-Link Library, 點選 "A Dll that exports some symbols" 我把其中一小段自動產生的.h Copy過來: //-------------------------------------------- #ifdef AAA_EXPORTS //AAA是我project的名稱 #define AAA_API __declspec(dllexport) #else #define AAA_API __declspec(dllimport) #endif AAA_API int fnAaa(void); //外掛Function的宣告 //-------------------------------------------- 之後你只要在*.cpp裡撰寫: AAA_API int fnAaa(void) { //your code here //end return 1; } 在Compiler後會產生*.dll及*.lib <=這就是要供人家使用的東西 其它人如何使用我撰寫的外掛函式? 在程式裡include外掛函式的*.h,並在Project裡加入外掛函式的*.lib, *.dll也要放置在相同的目錄下(若未指定路徑). 其實也業界有些很常用,用到爛的有名Lib, 像是美商國家儀器NI出的GPIB連線Library: BorlandC_gpib-32.obj 由麻省理工學院開發並發布在自由軟體協會(GNU)的快速傅立葉轉換Library (參見http://www.fftw.org/) 以上是工科的學生及業界比較會知曉的東西, 這樣為何要用外掛Lib的動機及理由就很明顯了,那就是: 如果你不懂快速傅立葉轉換,你老闆又叫你下禮拜做出一套來, 你自然會開始Google,並學會外掛Lib的完整使用方法... : 第一個問題:我想請問一下外部函數的使用時機?? : 例如:extern void func(xxxxx) : 我專案裡的main呼叫A檔的函式 : 或者 : A檔呼叫main定義的函式 : 我都沒使用到extern,想請問哪種情況下才需要宣告成外部函式???? : 第二個問題:function pointer常用到哪個地方????好難使用阿XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.218.105.109

11/02 16:12, , 1F
突然覺得我離題離很大,明明是在問Extern....我卻硬
11/02 16:12, 1F

11/02 16:13, , 2F
是回答到 dll export的東西...
11/02 16:13, 2F

11/02 16:14, , 3F
照之前討論, function預設就是extern的, 或許應該反過來
11/02 16:14, 3F

11/02 16:14, , 4F
解釋, 什麼時候才會用到非extern的function. 話說回來,
11/02 16:14, 4F

11/02 16:14, , 5F
非extern的function修飾子是用什麼啊?_? static??
11/02 16:14, 5F

11/02 16:49, , 6F
VictorTom,說真的我還不知道怎樣用非extern呢...
11/02 16:49, 6F

11/02 16:50, , 7F
少加一個大..VictorTom大, 不過我想沒人會刻意限定,就
11/02 16:50, 7F

11/02 16:52, , 8F
好像是你有a.cpp, b.cpp, 在a裡寫了一個fun(), 還刻意讓
11/02 16:52, 8F

11/02 16:54, , 9F
它在b.cpp裡不能使用...
11/02 16:54, 9F

11/02 17:01, , 10F
有阿...
11/02 17:01, 10F

11/02 17:34, , 11F
就static吧 檔案限定
11/02 17:34, 11F

11/02 17:43, , 12F
我~~我是小小啊Orz 應該把巢狀函數算進來嗎??
11/02 17:43, 12F

11/02 18:07, , 13F
身為一個新手,我希望這篇M。
11/02 18:07, 13F

11/02 22:16, , 14F
感謝f大~看完發現.............我好弱~我該去填海了
11/02 22:16, 14F

11/03 09:34, , 15F
b大別這樣... 這些東西也是大家分享學習來的 ^_^ (f小)
11/03 09:34, 15F
文章代碼(AID): #1AxfGpjM (C_and_CPP)
文章代碼(AID): #1AxfGpjM (C_and_CPP)