作者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/cn.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