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/