c - 函数指针中标记之前的预期标识符

标签 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都是我为某些操作定义的一些函数......

最佳答案

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

所有情况都应该像下面这样

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

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

关于c - 函数指针中标记之前的预期标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40253943/

相关文章:

c - 以下 SLL 声明有何不同

python - 如何从 Python C API 获取时区?

c - 减少C中链表遍历时的迭代次数

python - 如何使用两个数组作为返回值压缩函数 - Python

c - 编写一个函数,显示三个不同数字的所有不同组合

inheritance - golang 关注点分离与可用性

c - 具有指针作为 C 成员的结构的 memcpy

c - 为什么我不能声明二维数组?

c - 防止可能的数据竞争情况

javascript - 检查数组中的项目,是否有打印 JS/HTML 中的特定文本