[問題] void* 轉型成 非指標型態

看板C_and_CPP (C/C++)作者 (沒有暱稱)時間2年前 (2022/04/28 10:38), 2年前編輯推噓0(0011)
留言11則, 5人參與, 2年前最新討論串1/1
Linux ubuntu WSL GCC 簡化過的程式: bool app_usb_activity(void *extra_data) { case Mic: { uint8_t* target_level = (uint8_t*)extra_data; break; } case Audio: { uint32_t event = (uint32_t) extra_data; break; } } 所以void * 可以轉成非指標類型的變數的意思? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.242.38.34 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1651113501.A.333.html ※ 編輯: anoymouse (210.242.38.34 臺灣), 04/28/2022 10:39:19

04/28 10:53, 2年前 , 1F
C 才能把指標轉成數值,C++ 要加 -fpermissive
04/28 10:53, 1F

04/28 10:57, 2年前 , 2F
而且如果指標是 64-bit 的話呼叫者還要知道函式轉換
04/28 10:57, 2F

04/28 10:57, 2年前 , 3F
的行為是什麼
04/28 10:57, 3F

04/28 11:37, 2年前 , 4F
的確是C,只限數值對不對?
04/28 11:37, 4F

04/28 16:50, 2年前 , 5F
欸,我不知道除了轉型成指標跟數值你還會想轉成什麼
04/28 16:50, 5F

04/29 00:10, 2年前 , 6F
我猜猜 enum或structure?
04/29 00:10, 6F

04/29 07:56, 2年前 , 7F
對啊 會很奇怪 就問問看
04/29 07:56, 7F

04/29 09:03, 2年前 , 8F
C++ 用 reinterpret_cast<> 轉,不用開 -fpermissive。
04/29 09:03, 8F

04/29 09:04, 2年前 , 9F
這 C API 典型的用法之一,傳的人不想去 heap 上配一塊就
04/29 09:04, 9F

04/29 09:04, 2年前 , 10F
直接轉型傳,翻 pthread_create() 的範例很容易找到。
04/29 09:04, 10F

04/29 09:47, 2年前 , 11F
這樣寫不是不能理解就是 32bit以上結果都會對
04/29 09:47, 11F
文章代碼(AID): #1YQVuTCp (C_and_CPP)
文章代碼(AID): #1YQVuTCp (C_and_CPP)