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

看板C_and_CPP作者 (燃燒吧我的小宇宙)時間14年前 (2009/11/01 19:55), 編輯推噓2(202)
留言4則, 3人參與, 最新討論串2/3 (看更多)
※ 引述《bzgibson (B'z)》之銘言: : 第一個問題:我想請問一下外部函數的使用時機?? : 例如:extern void func(xxxxx) : 我專案裡的main呼叫A檔的函式 : 或者 : A檔呼叫main定義的函式 : 我都沒使用到extern,想請問哪種情況下才需要宣告成外部函式???? : 第二個問題:function pointer常用到哪個地方????好難使用阿XD 第一個問題我沒辦法回答你 我一直以為 function 寫在另一個 .h 後 只要 include 進來就可以用了,從沒有用過 extern 方式宣告 關於 function pointer: 以 "排序法" 而言,假設我的 sort function 長相為 void sort_func(int cnt, //排列個數 void* partern, // 要排列的陣列(看成 int* partern 可能會容易懂些) bool up_down, // 升冪or降冪 bool (*pcompare_func)(void)); // 指向比較大小的函數指標 關於你的排序法,你要怎麼比較大小? 有時不是只有像 3>1 , -1<0 這樣的比較方式 如果你要比較的是 "結構裡的某個成員" 呢? 比如說我今天有一個 score 結構長得像這樣 struct score{ char name[20]; unsigned math; unsigned chi; unsigned eng; unsigned total }; 那麼我比較的方式可能會是以此結構的 total (總分) 為排序依據, 所以我又寫了一個比較的 compare_func, 大概長這樣 bool compare_func(int cnt, struct score* data){ return (data[i].total > data[j].total); } 寫好比較大小的函數之後,再丟給 sort_func 的第三個參數 關於相關的問題,你可以再多看一些相關資料 甚至到 MSDN 去查一下 sort 函數怎麼用你應該就會明白了 也可以先看一個簡單的例子: http://0rz.tw/zsMYe 以上資訊若不全或有誤,歡迎更正 -- 我期待 我等待 肩狹骨上的翅膀早些長出來 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.195.164.115 ※ 編輯: tropical72 來自: 123.195.164.115 (11/01 19:58) ※ 編輯: tropical72 來自: 123.195.164.115 (11/01 20:02)

11/01 20:03, , 1F
1. 因為你把function的定義寫在.h檔
11/01 20:03, 1F
※ 編輯: tropical72 來自: 123.195.164.115 (11/01 20:03)

11/01 20:05, , 2F
你只寫void foo();這只有宣告 預設就是extern
11/01 20:05, 2F
※ 編輯: tropical72 來自: 123.195.164.115 (11/01 21:47)

11/01 22:07, , 3F
我也是把func的定義寫在.h,只是我看到很多人的.h檔
11/01 22:07, 3F

11/01 22:08, , 4F
裡面把fun定義成 extern fuc(xxxx)
11/01 22:08, 4F
文章代碼(AID): #1AxNSrtx (C_and_CPP)
文章代碼(AID): #1AxNSrtx (C_and_CPP)