[問題] API中使用 "..." 的參數使用

看板C_and_CPP (C/C++)作者 (小湯姆)時間13年前 (2012/08/20 16:39), 編輯推噓2(2012)
留言14則, 7人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Codeblocks 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) None 問題(Question): 使用到的API中的函數長這個樣子 int def_name_list(const unsigned int name_num, ...) 餵入的資料(Input): char name_list[8][32] = {"John", "Mary", "Sue", "Taylor",\ "Eric", "Evan", "Kevin", "Martin"}; def_name_list(4, 0, 1, 2, 3) 或 def_name_list(2, 1, 5) 或 def_name_list(3, 0, 4, 2) 等等 預期的正確結果(Expected Output): 如果使用 def_name_list(4, 0, 1, 2, 3); 這行指令的話 在def_name_list中就可以對應到name_list中的"John", "Mary", "Sue", "Taylor" 然後把這幾個名子編列成一串資料 補充說明(Supplement): 因此想寫成進階的版本為 由外部檔案讀入4,0,1,2,3或3,0,4,2或2,1,5 然後利用迴圈去把def_name_list叫出來使用 目前最主要的點是卡在不曉得這個API的"..."要怎麼自動擴展成我需要的參數個數 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 42.79.39.27

08/20 16:48, , 1F
google: va_list
08/20 16:48, 1F

08/20 17:10, , 2F
不好意思,我主要是要使用這個def_name_list的時候
08/20 17:10, 2F

08/20 17:12, , 3F
利用迴圈的方式把要丟進去def_name_list後面的"..."的資料
08/20 17:12, 3F

08/20 17:13, , 4F
自動擴展成要丟進去的個數。比如說我要丟2,1,5的話就是3個
08/20 17:13, 4F

08/20 17:14, , 5F
參數丟進去。3,0,4,2就是4個參數丟進去給def_name_list用
08/20 17:14, 5F

08/20 17:45, , 6F
根據「每筆資料最多會有幾個名子」會有不同的做法。
08/20 17:45, 6F

08/20 17:46, , 7F
譬如說如果最多會到上百個名子的話可能不應該用這個 API。
08/20 17:46, 7F

08/20 17:47, , 8F
如果最多只有四個名子,可以用 switch case 呼叫。
08/20 17:47, 8F

08/20 18:57, , 9F
簡單的說: 辦不到。沒辦法不告知數目而自動判斷,除非用
08/20 18:57, 9F

08/20 18:57, , 10F
標兵。
08/20 18:57, 10F

08/20 19:03, , 11F
看不太懂問題 是想在開發階段做到執行階段的判斷!?
08/20 19:03, 11F

08/20 19:06, , 12F
現在流行丟個 vector, list 之類的資料結構,一個參數打死
08/20 19:06, 12F

08/20 21:09, , 13F
用像JSON這類的serialization怎麼樣,到function裡面自己切
08/20 21:09, 13F

08/21 08:53, , 14F
感謝各位的建議,關於這個議題,會改其他的方式做coding
08/21 08:53, 14F
文章代碼(AID): #1GCVUyDx (C_and_CPP)
文章代碼(AID): #1GCVUyDx (C_and_CPP)