c++ - 函数指针类型不能用于函数原型
问题描述
我想知道为什么以下代码段不起作用:
typedef void (*MYFUNC_PTR)(int a);
MYFUNC_PTR myFunc;
void myFunc(int a)
{
}
我正在使用 Microsoft Visual Studio 2017。源文件是“.c”,但我对“.cpp”进行了同样的尝试。我得到的错误是
Error C2365 'myFunc': redefinition; previous definition was 'data variable'
注意:我认为这段代码会起作用,因为微软提到了一个类似的片段(它也不起作用,因为我也测试了那个片段),例如这里。
编辑:我认为这可能仅适用于较新的 C++ 标准之一,但事实并非如此,因为我尝试了 C++17。
解决方案
函数指针与函数声明不同,所以这根本行不通。但是,您可以这样做:
typedef void(*MYFUNC_PTR)(int a);
MYFUNC_PTR myFunc;
void someFunc(int a)
{
}
int main() {
myFunc = someFunc;
return 0;
}
推荐阅读
- r - igraph 解析具有不同节点大小 r 的重叠节点
- angular - 如何使用 ant design (NG-Zorro) carousel 每页显示多个项目?
- node.js - Webdriverio TypeError:element.click 不是函数
- c# - 错误 1 'System.IO.File.WriteAllBytes(string, byte[])' 的最佳重载方法匹配有一些无效参数
- excel - 如何从嵌入外部系统的 TreeView 获取节点项目标题?
- c# - 数据网格视图 全选
- sql - 用于在数据库中查找用户的 SQL 查询的性能
- reactjs - TypeError:无法读取 JEST 和酶测试中未定义的属性“子路径”
- php - PHP 致命错误:允许的内存大小为 1073741824 字节已用尽(试图分配 16777216 字节)
- java - Java android EventBus 得到两个相同的事件