函数指针中令牌之前的预期标识符

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();