[問題] 這樣有沒有可能做到呢?

看板C_and_CPP作者 (Nagahara)時間14年前 (2010/03/19 20:46), 編輯推噓5(505)
留言10則, 6人參與, 最新討論串1/1
我想寫一個函數 可以丟入一個struct變數 就自動把struct裡面的element自動往右shift一個bit 不論是任何type都是 Ex. typedef struct { uint32_t a; uint16_t b; ... } MY_STRUCT_T; MY_STRUCT_T s; function_X(&s); 呼叫完之後s裡面的element相當於執行下面的結果 a = a>>1; b = b>>1; 這個問題的關鍵點在於我不知道struct裡面有幾個元素、每個元素多大 請問這樣子還有可能做到嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.192.107.210

03/20 00:06, , 1F
不可能 你都不知道struct裡layout長什麼樣了..當然更
03/20 00:06, 1F

03/20 00:06, , 2F
別提要對各別元素作operator >>
03/20 00:06, 2F

03/20 00:06, , 3F
如果說是對整個struct作shift還有可能XD
03/20 00:06, 3F

03/20 00:36, , 4F
好像真的是這樣沒錯
03/20 00:36, 4F

03/20 06:09, , 5F
那你要用linked list做這個結構,不要用struct
03/20 06:09, 5F

03/20 06:46, , 6F
還有一點有差的是 >> 1 最高位是補 0, 但其他都是補上一位
03/20 06:46, 6F

03/20 06:47, , 7F
移過來的值, 所以不能完全對整個 struct 移
03/20 06:47, 7F

03/20 21:48, , 8F
不可能 因為你連 structure有哪些元素都不知道了
03/20 21:48, 8F

03/20 21:59, , 9F
在C++寫個method應該可以, 然後再用繼承關係XD
03/20 21:59, 9F

03/20 22:01, , 10F
那個是method dispatch 應該不是原文的問題
03/20 22:01, 10F
文章代碼(AID): #1Bet8MzZ (C_and_CPP)