typedef enum
{
TCP = 1,
UDP
}protocol;
typedef enum
{
DLL_Operation = 1,
MT_Operation,
Fork_Operation,
IPC_Operation
}msgc;
struct f
{
int seqNo;
protocol p;
msgc m;
protocol q;
int PayLoadSize;
void (*payload_ptr)();
};
这是我正在使用的结构...
现在我在结构中定义函数指针中的函数地址...
if(f2.m == 1)
{
f2.(*payload_ptr) = DLL;
f2.payload_ptr();
}
else if(f2.m == 2)
{
f2.(*payload_ptr) = MT;
f2.payload_ptr();
}
else if(f2.m == 3)
{
f2.(*payload_ptr) = Fork;
f2.payload_ptr();
}
else
{
f2.(*payload_ptr) = IPC;
f2.payload_ptr();
}
在编译这个程序时......它显示的错误就像..
错误:'('标记
之前的预期标识符f2。(* payload_ptr)= DLL;
&安培;所有情况都一样......解决方案是什么......
这个DLL,MT都是我为某些操作定义的一些功能...
答案 0 :(得分:1)
您正在错误地将值分配给函数指针。
对于所有情况,它应该如下所示
if(f2.m == 1)
{
f2.payload_ptr = DLL;
f2.payload_ptr();
}
请确保DLL等函数的类型为void DLL();