我想知道为什么以下代码段不起作用:
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提到了类似的代码段(如我所测试的那样,也无效),例如here。
编辑:我认为这可能仅适用于更新的C ++标准之一,但事实并非如此,因为我尝试了C ++ 17。
答案 0 :(得分:2)
函数指针与函数声明不一样,因此根本不起作用。您可以执行以下操作:
typedef void(*MYFUNC_PTR)(int a);
MYFUNC_PTR myFunc;
void someFunc(int a)
{
}
int main() {
myFunc = someFunc;
return 0;
}
答案 1 :(得分:2)