函数指针类型不能用于函数原型
Function pointer type cannot be used for a function prototype
我想知道为什么以下代码片段不起作用:
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'
注意:我认为这段代码会起作用,因为Microsoft提到了一个类似的代码片段(它也不起作用,因为我也测试了那个片段),例如在这里。
编辑:我认为这可能仅适用于较新的C++标准之一,但事实并非如此,因为我尝试了C++17。
函数指针与函数声明不是一回事,因此这根本不起作用。但是,您可以这样做:
typedef void(*MYFUNC_PTR)(int a);
MYFUNC_PTR myFunc;
void someFunc(int a)
{
}
int main() {
myFunc = someFunc;
return 0;
}
问题是myFunc
的类型是函数指针,而不是函数。之后,您将myFunc
定义为函数(当然),它们不匹配。
您可以更改MYFUNC_PTR
运行typedef
,然后
typedef void(MYFUNC_PTR)(int a);
MYFUNC_PTR myFunc;
void myFunc(int a)
{
}
住
相关文章:
- 函数如何通知用户它基于函数原型抛出异常?
- 在函数中拥有函数原型的目的是什么?
- 什么..(省略号)作为函数原型中唯一的函数参数,C++?
- 是否可以使用 libclang python 解析 cpp 文件中没有标头的函数原型
- 有没有办法在C++编译时更改函数原型?
- 省略函数原型中的返回类型
- 如何使用 "using" 关键字定义函数原型/签名
- 函数原型未初始化的局部变量
- 如何创建函数原型命名空间
- 标准库头文件函数原型的实现是如何用 c++ 编写的?
- 为什么这种类型的函数原型会引发错误?
- 函数指针类型不能用于函数原型
- 了解此函数原型
- 将字符串向量传递给函数和函数原型问题 c++
- 函数原型范围的有趣用法
- 为什么这不起作用(C++函数原型)
- 将数组传递到函数会在函数原型声明中出现错误
- 在头文件中的函数原型中获取指针数组:函数声明为 void
- 类/成员函数中的函数原型
- 函数原型中的字符串初始化