[英]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 Studio2017。源文件是“ .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
MYFUNC_PTR
为起作用,然后
typedef void(MYFUNC_PTR)(int a);
MYFUNC_PTR myFunc;
void myFunc(int a)
{
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.