2016-10-26 5 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)(); 
}; 

Dies ist meine Struktur, die ich verwende ...Erwartete Kennung vor Token in Funktionszeiger

Jetzt i in dieser Funktion Zeigeradresse der Funktion ist Zuordnung in strucutre definieren ...

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

in diesem Programm zusammenzustellen ... es zeigt Fehler wie ..

Fehler: erwartete Kennung vor '(' Token

f2. (* Payload_ptr) = DLL;

& für alle gleich Zustand .... was ist die Lösung ..

diese DLL, die alle MT sind eine Funktion, die ich für bestimmte Operation definieren ...

Antwort

1

Sie die Zuordnung der Werte Zeiger falsch zu funktionieren.

Es ist wie unter

für alle Fälle sollte
if(f2.m == 1) 
{                   
    f2.payload_ptr = DLL; 
    f2.payload_ptr(); 
} 

Bitte stellen Sie sicher, dass Funktionen wie DLL sind vom Typ void DLL();

Verwandte Themen