線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:789
推到 Plurk!
推到 Facebook!

能否請問一下

尚未結案
yungfan
一般會員


發表:25
回覆:13
積分:7
註冊:2003-12-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-27 04:00:45 IP:218.165.xxx.xxx 未訂閱
請問一下這段程式的作用是什麼?? #ifdef PROTO_ARGS extern int aaa(FILE *); #else extern int aaa(); #endif 麻煩各位先進幫我解答一下…先謝謝啦…
ENIX007
高階會員


發表:28
回覆:274
積分:185
註冊:2003-11-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-27 08:38:35 IP:210.243.xxx.xxx 未訂閱
引言: 請問一下這段程式的作用是什麼?? #ifdef PROTO_ARGS extern int aaa(FILE *); #else extern int aaa(); #endif 麻煩各位先進幫我解答一下…先謝謝啦…
yungfan您好 這是前置宣告,當其他的檔案有用到aaa這個函式時,若該檔案在這函式之前有宣告PROTO_ARGS,則aaa的函式原形宣告為int aaa(FILE *),否則就是int aaa() 程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
------
程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
yungfan
一般會員


發表:25
回覆:13
積分:7
註冊:2003-12-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-27 14:39:48 IP:218.165.xxx.xxx 未訂閱
函式原形宣告為int aaa(FILE *),否則就是int aaa() 這兩種有什麼差別啊?? 對程式的主体有影響嗎??
ENIX007
高階會員


發表:28
回覆:274
積分:185
註冊:2003-11-27

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-27 15:04:46 IP:210.243.xxx.xxx 未訂閱
yungfan您好 差別在於,當有定義PROTO_ARGS的時候, 你呼叫該函式 aaa(); 就會產生錯誤,因為引數不符合,呼叫時必須傳入一個指標參數才行, 相反的,當沒有定義PROTO_ARGS時,你呼叫 aaa(); 就會正確的去執行該函式內的內容,對程式主體當然有影響, 函式呼叫錯誤,基本上編譯就過不了了 程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
------
程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
yungfan
一般會員


發表:25
回覆:13
積分:7
註冊:2003-12-29

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-02-28 04:49:50 IP:218.165.xxx.xxx 未訂閱
1、為什麼要有這種定義呢…基本上在我的程式裡跟本不會跳到else… 2、假如真的沒定義PROTO_GRAS時…就會定義int aaa()… 但在aaa的程式中卻會用到引數來作判斷…這時引用aaa()不會有錯嗎?? 再幫我解答一下吧…感恩啦…^^
ENIX007
高階會員


發表:28
回覆:274
積分:185
註冊:2003-11-27

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-01 09:08:33 IP:210.243.xxx.xxx 未訂閱
yungfan您好 1.嗯...使用#ifdef這種方式在我的情況比較常出現在多個檔案相互include時,   比如檔案A include 檔案B,檔案B又include檔案A,為了避免重複定義與重複宣   告,常使用這種方法...您的情形我就不了解啦,因為使用覆載函式就能達到這   個效果囉
------
程式迷人之處,在於邏輯思考,然而卻也是惱人之處~~
系統時間:2024-05-18 13:07:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!