Re: [問題] porting issue(32bits-->8bits)
※ 引述《ando5566》之銘言:
: 各位版友日安,
: 最近小弟要將32bits平台的CAN protocol API, porting 至8bits平台上,
: 遇到了一個問題, 如下:
...
: 但是因為我的原意是porting, 所以我不希望影響任何其他寫法,
^^^^^^^
: 嘗試過使用union的作法, 但是仍會面臨無法使EID定址在第12bit的問題。
: 想請教版上高手, 有其他方法嗎?
: 謝謝!
我不知道這篇為什麼沒有人回正解...
在我唸書的時候
記得老師曾經說過「C 的 bit-fields 不要亂用」
尤其是在涉及 memory format (layout) 相關操作的時候
像是 network package 的格式、操作 CPU registers …
一開始覺得沒什麼
但後來真的有看過用 C 開發的 http APIs 竟然用 bit-fields 來 mapping 封包
也看過 Arduino 的教學文件竟然是用 bit-fields 在操作 LED 燈和 GPIO
所以我覺得推文只要一句「bit-fields 不要亂用」
應該就足夠了
不然,
問 google 也會給你答案
`c bit fields portability' 或 `bit fields portability'
有趣的是,差一個 C 搜出來的會是不同答案
不過觀點是一致的
總之,你需要的是透過 bit manipulation 來操作
(有時候打包成 macro 會直接叫 bitmask, bitset 或 bitops....)
ref: https://stackoverflow.com/a/263738
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.118.199.101 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1586889381.A.CDD.html
推
04/15 13:19,
4年前
, 1F
04/15 13:19, 1F
→
04/15 14:36,
4年前
, 2F
04/15 14:36, 2F
噓
04/15 15:26,
4年前
, 3F
04/15 15:26, 3F
→
04/15 15:27,
4年前
, 4F
04/15 15:27, 4F
→
04/15 16:39,
4年前
, 5F
04/15 16:39, 5F
→
04/15 16:40,
4年前
, 6F
04/15 16:40, 6F
→
04/15 16:40,
4年前
, 7F
04/15 16:40, 7F
→
04/15 16:42,
4年前
, 8F
04/15 16:42, 8F
→
04/15 16:43,
4年前
, 9F
04/15 16:43, 9F
→
04/15 19:17,
4年前
, 10F
04/15 19:17, 10F
→
04/15 20:35,
4年前
, 11F
04/15 20:35, 11F
→
04/15 22:24,
4年前
, 12F
04/15 22:24, 12F
→
04/15 22:25,
4年前
, 13F
04/15 22:25, 13F
→
04/15 22:30,
4年前
, 14F
04/15 22:30, 14F
→
04/15 22:42,
4年前
, 15F
04/15 22:42, 15F
→
04/15 22:43,
4年前
, 16F
04/15 22:43, 16F
→
04/15 23:11,
4年前
, 17F
04/15 23:11, 17F
推
04/16 01:43,
4年前
, 18F
04/16 01:43, 18F
→
04/16 01:46,
4年前
, 19F
04/16 01:46, 19F
→
04/16 02:22,
4年前
, 20F
04/16 02:22, 20F
推
04/16 07:25,
4年前
, 21F
04/16 07:25, 21F
→
04/16 07:25,
4年前
, 22F
04/16 07:25, 22F
→
04/16 07:30,
4年前
, 23F
04/16 07:30, 23F
→
04/16 07:31,
4年前
, 24F
04/16 07:31, 24F
→
04/16 16:09,
4年前
, 25F
04/16 16:09, 25F
→
04/16 16:09,
4年前
, 26F
04/16 16:09, 26F
→
04/16 16:10,
4年前
, 27F
04/16 16:10, 27F
討論串 (同標題文章)