作者anoymouse (沒有暱稱)
看板C_and_CPP
標題[問題] void* 轉型成 非指標型態
時間Thu Apr 28 10:38:19 2022
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://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1651113501.A.333.html
※ 編輯: anoymouse (210.242.38.34 臺灣), 04/28/2022 10:39:19
1F:→ nh60211as: C 才能把指標轉成數值,C++ 要加 -fpermissive 04/28 10:53
2F:→ nh60211as: 而且如果指標是 64-bit 的話呼叫者還要知道函式轉換 04/28 10:57
3F:→ nh60211as: 的行為是什麼 04/28 10:57
4F:→ anoymouse: 的確是C,只限數值對不對? 04/28 11:37
5F:→ nh60211as: 欸,我不知道除了轉型成指標跟數值你還會想轉成什麼 04/28 16:50
6F:→ chuegou: 我猜猜 enum或structure? 04/29 00:10
7F:→ anoymouse: 對啊 會很奇怪 就問問看 04/29 07:56
8F:→ tinlans: C++ 用 reinterpret_cast<> 轉,不用開 -fpermissive。 04/29 09:03
9F:→ tinlans: 這 C API 典型的用法之一,傳的人不想去 heap 上配一塊就 04/29 09:04
10F:→ tinlans: 直接轉型傳,翻 pthread_create() 的範例很容易找到。 04/29 09:04
11F:→ bachelorwhc: 這樣寫不是不能理解就是 32bit以上結果都會對 04/29 09:47
12F:推 OnlyRD: 當然可以啊,c++也可以,但是c++需要你確定呼叫強 05/15 20:21
13F:→ OnlyRD: 制轉型,上面留 05/15 20:21
14F:→ OnlyRD: 言有寫懶得打字。 05/15 20:21