精華區beta C_and_CPP 關於我們 聯絡資訊
※ 引述《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
flashphp:突然覺得我離題離很大,明明是在問Extern....我卻硬 11/02 16:12
flashphp:是回答到 dll export的東西... 11/02 16:13
VictorTom:照之前討論, function預設就是extern的, 或許應該反過來 11/02 16:14
VictorTom:解釋, 什麼時候才會用到非extern的function. 話說回來, 11/02 16:14
VictorTom:非extern的function修飾子是用什麼啊?_? static?? 11/02 16:14
flashphp:VictorTom,說真的我還不知道怎樣用非extern呢... 11/02 16:49
flashphp:少加一個大..VictorTom大, 不過我想沒人會刻意限定,就 11/02 16:50
flashphp:好像是你有a.cpp, b.cpp, 在a裡寫了一個fun(), 還刻意讓 11/02 16:52
flashphp:它在b.cpp裡不能使用... 11/02 16:54
dendrobium:有阿... 11/02 17:01
QQ29:就static吧 檔案限定 11/02 17:34
VictorTom:我~~我是小小啊Orz 應該把巢狀函數算進來嗎?? 11/02 17:43
metroways:身為一個新手,我希望這篇M。 11/02 18:07
bzgibson:感謝f大~看完發現.............我好弱~我該去填海了 11/02 22:16
flashphp:b大別這樣... 這些東西也是大家分享學習來的 ^_^ (f小) 11/03 09:34