函数指针中令牌之前的预期标识符
Expected identifier before token in function pointer
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都是我定义的一些函数,用于某些操作...
您错误地将值分配给了函数指针。
所有情况应该如下所示
if(f2.m == 1)
{
f2.payload_ptr = DLL;
f2.payload_ptr();
}
请确保DLL等函数的类型为void DLL();
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都是我定义的一些函数,用于某些操作...
您错误地将值分配给了函数指针。
所有情况应该如下所示
if(f2.m == 1)
{
f2.payload_ptr = DLL;
f2.payload_ptr();
}
请确保DLL等函数的类型为void DLL();