[问题] void* 转型成 非指标型态

楼主: anoymouse (没有暱称)   2022-04-28 10:38:19
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 * 可以转成非指标类型的变量的意思?
作者: nh60211as   2022-04-28 10:53:00
C 才能把指标转成数值,C++ 要加 -fpermissive而且如果指标是 64-bit 的话呼叫者还要知道函式转换的行为是什么
楼主: anoymouse (没有暱称)   2022-04-28 11:37:00
的确是C,只限数值对不对?
作者: nh60211as   2022-04-28 16:50:00
欸,我不知道除了转型成指标跟数值你还会想转成什么
作者: chuegou (chuegou)   2022-04-29 00:10:00
我猜猜 enum或structure?
楼主: anoymouse (没有暱称)   2022-04-29 07:56:00
对啊 会很奇怪 就问问看
作者: tinlans ( )   2022-04-29 09:03:00
C++ 用 reinterpret_cast<> 转,不用开 -fpermissive。这 C API 典型的用法之一,传的人不想去 heap 上配一块就直接转型传,翻 pthread_create() 的范例很容易找到。
作者: bachelorwhc (单身老王)   2022-04-29 09:47:00
这样写不是不能理解就是 32bit以上结果都会对
作者: OnlyRD (里巷人)   2022-05-15 20:21:00
当然可以啊,c++也可以,但是c++需要你确定呼叫强制转型,上面留言有写懒得打字。

Links booklink

Contact Us: admin [ a t ] ucptt.com