gpt4 book ai didi

C++函数指针语法

转载 作者:太空狗 更新时间:2023-10-29 20:00:39 25 4
gpt4 key购买 nike

我知道一般情况下,函数指针是这样声明的:

 void __stdcall my_func(int i) {} // for assigning

void (__stdcall * my_ptr)(int) = &my_func;

现在我有几个以函数指针作为参数的函数:

 void calling_func(void (__stdcall * callback)(int)) { *callback(1); }

在头文件中,我只是去掉了那个东西的名字:

void calling_func(void (__stdcall *)(int));

瞧,这行得通......让我思考:如果这是一个完整的类型声明,难道不能对函数指针也使用正常的 TYPE NAME = VALUE 语法吗?

我试图声明:

 ( void (__stdcall *)(int) ) callback = &my_func;

它也可以编译!为什么不经常使用它?这个符号有缺陷吗?对我来说,它似乎会极大地简化函数指针的使用......例如,在 typedef 中也是如此:通常它是new name 实际上在整个表达式的中间。更不用说返回函数指针的函数的符号了……

最佳答案

那不是声明,它是 callback 的转换,然后分配给它。

您确定范围内没有预先存在的声明吗?

关于C++函数指针语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5555085/

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