gpt4 book ai didi

c++ - 强制转换函数指针

转载 作者:太空狗 更新时间:2023-10-29 23:53:22 25 4
gpt4 key购买 nike

假设我有一个函数

void myFun(int*) 
在 C++ 中,以下内容究竟是什么意思


( void(*)(void*) )&myFun

它是一个指向以 (void*) 作为参数并返回 void 的函数的指针吗?这种类型的转换是否被允许?

最佳答案

就目前而言,我很确定这是不允许的。

如果您删除初始 void 周围的括号以获取:

void (*)(void *)

...那么是的,它是一个指向函数的指针,该函数返回 void 并将指向 void 的指针作为其唯一参数。要转换为该类型,您需要将类型的整个名称括在括号中,这样您将得到:(void (*)(void *)),您将在其后跟正在转换的值(value),得到:

(void (*)(void *))&myFun;

至少如果内存可用,是的,这是允许的,尽管通过结果取消引用指针(即尝试调用它指向的函数)可能会产生未定义的行为。特别是,当/如果您调用该函数时,它需要一个指向 int 的指针,并且(大概)将使用它指向的任何内容作为 int。但是,如果它指向的内容未正确对齐以用作 int,则它不太可能按预期工作。

关于c++ - 强制转换函数指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11238653/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com