看板 C_and_CPP 關於我們 聯絡資訊
這段code是在linux-input上看到的. 也許會open在linux 3.7吧. 我只取一段我看不動的地方 http://pastie.org/4906985 不了解為何 只定義 u8 data[0] 但卻可以使用到data[1] 41行處. 又同時可用到 cmd->c.opcode, cmd->c.reportTypeID sizeof(union command) = 4 args_len = 2 因此他會allocat 6Byte給cmd 請問這樣寫會有問題嗎? 謝謝. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 223.139.227.186
LPH66:我覺得你應該弄錯 u8 data[0] 的位置了... 10/04 17:35
LPH66:等一下 我漏掉那整個是個 union @@ 10/04 17:36
EdisonX:這個看起來頗像柔性陣列 (flex array) .. 10/04 19:44
EdisonX:實際上用 u8 *data 可能會較好, u8 data[0] 在標準上是不 10/04 19:45
EdisonX:合法的. 拙作 http://0rz.tw/CDPY0 section 6 10/04 19:46
EdisonX:板上其他討論 : #1DhhMrOO (C_and_CPP) 系列文。 10/04 19:47
EdisonX:(補結論,如果data[0]在那裡可編的話,這段碼沒問題。) 10/04 19:51
LPH66:u8 *data 跟這個不同吧...不知道 union 裡能不能放 [] 就是 10/04 23:15
LPH66:(我是指在 C++11 裡) 10/04 23:15
EdisonX:u8 *data 是不同,寫錯了抱歉。 (不過真的蠻像 flex arr.) 10/04 23:24
這段code是可以編譯過的, 使用gcc 4.6.3編譯沒問題. 執行起來也OK. 但還是覺得這段code蠻tricky的 XD ※ 編輯: pilipalabon 來自: 114.137.38.22 (10/05 08:57)