检查以下代码
int add(int a, int b)
{
return a + b;
}
void functionptrdemo()
{
typedef int *(funcPtr) (int,int);
funcPtr ptr;
ptr = add; //IS THIS CORRECT?
int p = (*ptr)(2,3);
cout<<"Addition value is "<<p<<endl;
}
在我尝试使用相同的函数签名为函数ptr分配函数的地方,它显示编译错误为错误C2659:'=':函数作为左操作数
答案 0 :(得分:10)
你打算写的东西很可能不是:
typedef int *(funcPtr) (int,int);
但:
typedef int (*funcPtr) (int,int);
答案 1 :(得分:2)
Alex回答是正确的。 但好的做法将是
ptr = &add;
如果你这样写如下:
ptr = add;
它是假定您想要的编译器 存储函数add的地址。 所以最好不要让编译器假设。