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

时间:2016-10-26 04:47:59

标签: c function structure function-pointers void-pointers

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都是我为某些操作定义的一些功能...

1 个答案:

答案 0 :(得分:1)

您正在错误地将值分配给函数指针。

对于所有情况,它应该如下所示

if(f2.m == 1)
{                                                                           
    f2.payload_ptr = DLL;
    f2.payload_ptr();
}

请确保DLL等函数的类型为void DLL();