精華區beta Programming 關於我們 聯絡資訊
※ 引述《PCMan.bbs@bbs.sayya.org (PCMan X Project)》之銘言: > ※ 引述《UNARY.bbs@bbs.cse.ttu.edu.tw (Rootkit Researcher)》之銘言: > > int _open(const char *filename, int oflag); > > int _open(const char *filename, int oflag, int pmode); > > _open 可以有第三參數,在實作上是用 ... 可變長度引數同 printf > 第三參數如果是... 應該可有可無吧? > 就像是 printf 也可以只收一個參數 > > 所以定義 open(file, mode) 這樣的 macro 會有問題 > 當真 @_@,其實我沒有實驗過 XD 其實我的意思是 如果在程式中,兩個參數和三個參數的用法都要使用 那就得定義兩個 macro 了,不能直接把 3 引數代入給 2 參數的 macro 舉個例子 #define pp(x) printf(x) pp("%d",123); VC 這樣會有警告,但還是會過,不過執行結果是錯的 gcc 的話根本不過 而我記得 C99 的 macro 參數也支援 ... 了 就可以直接解決 > > 除非支援 C99 .. > 大不了就包個 wrapper > int open(...) > { > _open(...); > } -- , 秘密情人 (bbs.cse.ttu.edu.tw) ~\ Post From: 61-70-137-117.adsl.static.giga.net.tw