繁体   English   中英

函数指针类型不能用于函数原型

[英]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_PTRtypedef MYFUNC_PTR为起作用,然后

typedef void(MYFUNC_PTR)(int a);
MYFUNC_PTR myFunc;
void myFunc(int a)
{

}

生活

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM