看板 C_and_CPP 關於我們 聯絡資訊
loveme00835:不推薦寫不定參數的東西, 有夠危險, 你該想的是如何把01/16 23:56
loveme00835:流程分得更詳細, 會把數字轉成16進位字串了, 那取代字01/16 23:57
loveme00835:串該怎麼做? 需要多個整數傳指標進去不就好了?01/16 23:57
loveme00835:http://codepad.org/HDTS2YUn 01/16 23:57
↑ 我也推 l 大
softwind:__VA_ARGS__, plz check "Variadic Macros" 01/17 00:07
softwind:不定引數會危險... 通常是 user的問題, printf("%s",0); 01/17 00:09
softwind:也是當給你看 不用太擔心~ 當機比未定狀態好了 01/17 00:10
loveme00835:不定引數也沒有彈性, 更不用說語意明不明確了, 不是方 01/17 00:19
loveme00835:便就好01/17 00:19
-------------------------------------------------- Primer 4e 7.2.7 (p244) void foo(param_list, ...); 「此函式被呼叫時可能有零個或多個引數,且引數型別未知」 ------------------------------------------------------- 就小弟對於 va_list 淺薄研究, 所有終止進行運算大致上只有二種方式, 一種是如 Primer 所說,一開始就明確給參數數量, 不過要這麼做的話幹嘛還要用 va_list ? 塞 array 不就好了? 另一方法是設定終止值,數字的話可以最後給 0(例子常用-1) 當做結束, 提醒的是,va 系列是 macro,不是函式,下述連結可參考 http://ehome.hifly.to/showthread.php?s=&threadid=329 ---------------------------------------------------------- 另 loveme 所指出的 「危險」,其實並不只是有沒有基本 sence , 而是真的很危險,特別是在自動轉型的時候,(像是 double 引數傳入 int 參數) 以下程式碼可供參考,注意第四次呼叫副函式時結果會是錯的 http://nopaste.csie.org/0702b 可能我還感受不到它的好處,所以小弟也是覺得少用 va_list 之前用 va 寫的也全都改回來 -- YouLoveMe() ? LetItBe() : LetMeFree(); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.76.142
loveme00835:Q口Q 01/17 01:28