2016-10-26 2 views
0
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)(); 
}; 

Это моя структура, я использую ...Ожидаемый идентификатор перед тем самым в указатель функции

Теперь я задаю адрес функции в этой функции указатель, определяющий в strucutre ...

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

Вы назначаете значение неправильно использовать указатели.

Это должно быть, как показано ниже для всех случаев

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

Пожалуйста, убедитесь, что функции, такие как DLL имеют тип void DLL();

Смежные вопросы