Ich kann das folgende Programm wegen der zyklischen Abhängigkeit zwischen einer Struktur und einem Funktionszeiger nicht kompilieren.zyklische Abhängigkeit - Strukturen und Funktionszeiger, die sich gegenseitig referenzieren
// fnPtr.cpp: Definiert den Einstiegspunkt für die Konsolenanwendung. //
#include "stdafx.h"
#include "stdlib.h"
//typedef gNewType;
typedef void (*ptr)(gStruct *pStr, int pNm);
struct gInStruct{
char *sAlpBet;
ptr sFunPtr;
};
struct gStruct{
//gNewType sNtype;
gInStruct sInStruct;
int sNum;
};
//typedef void (*ptr)(gStruct *pStr, int pNm);
void myFun(char *pStr1, int pNum){
return ;
}
int _tmain(int argc, _TCHAR* argv[])
{
void (*fnPtr)(char *pStr, int pNm);
char lAlphabet = 'a';
fnPtr = myFun;
gStruct *lStructPtr = (gStruct*)malloc(sizeof(gStruct));
lStructPtr->sNum = 10;
lStructPtr->sInStruct.sAlpBet = &lAlphabet;
lStructPtr->sInStruct.sFunPtr = fnPtr;
return 0;
}
ich folgende Fehler bin immer:
Fehler 7 Fehler C2039: 'sFunPtr': ist kein Mitglied von 'gInStruct' c: \ users \ saurabh17g \ Dokumente Visual Studio 2010 \ \ Projekte \ fnptr \ fnptr \ fnptr.cpp 31
Fehler 3 Fehler C2062: Typ 'int' unerwartet c: \ users \ saurabh17g \ Dokumente \ Visual Studio 2010 \ projects \ fnptr \ fnptr \ fnptr.cpp 7
Fehler 1 Fehler C2065: 'gStruct': nicht deklarierter Bezeichner c: \ users \ suarabh17g \ docum ents \ visual studio 2010 \ projekte \ fnptr \ fnptr \ fnptr.cpp 7
Fehler 2 Fehler C2065: 'pStr': nicht deklarierter Bezeichner c: \ users \ suarabh17g \ Dokumente \ Visual Studio 2010 \ projects \ fnptr \ fnptr \ fnptr.cpp 7
Fehler 4 Fehler C2146: Syntaxfehler: fehlt ';' Bezeichner 'sFunPtr' c: \ Benutzer \ suarabh17g \ Dokumente \ Visual Studio 2010 \ Projekte \ fnptr \ fnptr \ fnptr.cpp 10
Fehler 5 Fehler C4430: Typspezifizierer fehlt - int wird angenommen. Hinweis: C++ unterstützt nicht den Standardwert -int c: \ Benutzer \ suarabh17g \ Dokumente \ Visual Studio 2010 \ Projekte \ fnptr \ fnptr \ fnptr.cpp 10
Fehler 6 Fehler C4430: fehlende Typangabe - int angenommen. Hinweis: C++ nicht default-int c unterstützen: \ users \ saurabh17g \ Dokumente \ Visual Studio 2010 \ projects \ fnptr \ fnptr \ fnptr.cpp 10
Wenn ich zum ersten Mal typedef und uncomment zweite typedef Kommentar
Fehler 4 Fehler C2039: 'sFunPtr': ist kein Mitglied von 'gInStruct' c: \ Benutzer \ suarabh17g \ Dokumente \ Visual Studio 2010 \ Projekte \ fnptr \ fnptr \ fnptr.cpp 31
Fehler 1 Fehler C2146: Syntaxfehler : fehlt ';' Bezeichner 'sFunPtr' c: \ Benutzer \ suarabh17g \ Dokumente \ Visual Studio 2010 \ Projekte \ fnptr \ fnptr \ fnptr.cpp 10
Fehler 2 Fehler C4430: Typspezifizierer fehlt - int wird angenommen. Hinweis: C++ unterstützt nicht den Standardwert -int c: \ Benutzer \ suarabh17g \ Dokumente \ Visual Studio 2010 \ Projekte \ fnptr \ fnptr \ fnptr.cpp 10
Fehler 3 Fehler C4430: fehlender Typspezifizierer - int angenommen. Hinweis: C++ unterstützt nicht standardmäßig-int c: \ Benutzer \ suarabh17g \ Dokumente \ Visual Studio 2010 \ Projekte \ fnptr \ fnptr \ fnptr.cpp 10
Bitte lassen Sie mich eine mögliche Antwort wissen. Vielen Dank im Voraus, Saurabh
Danke asaelr .. Es hat funktioniert! Es gab jedoch noch einen weiteren Fehler. Die Funktionszeigerdefinition enthielt keinen Verweis auf die Struktur. –