Я не могу скомпилировать следующую программу из-за циклической зависимости между структурой и указателем функции.циклическая зависимость - структуры и указатель функции, ссылающиеся друг на друга
// fnPtr.cpp: Определяет точку входа для консольного приложения. //
#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;
}
Я получаю следующие ошибки:
Ошибка 7 Ошибка C2039: 'sFunPtr': не является членом 'gInStruct' C: \ Users \ saurabh17g \ документы \ Visual Studio 2010 \ проекты \ fnptr \ fnptr \ fnptr.cpp 31
ошибка 3 ошибка C2062: тип 'INT' неожиданные C: \ Users \ saurabh17g \ Documents \ Visual Studio 2010 \ Projects \ fnptr \ fnptr \ fnptr.cpp 7
Ошибка 1 ошибка C2065: 'gStruct': необъявленный идентификатор c: \ users \ saurabh17g \ docum ents \ visual studio 2010 \ projects \ fnptr \ fnptr \ fnptr.cpp 7
Ошибка 2 ошибки C2065: 'pStr': необъявленный идентификатор c: \ users \ saurabh17g \ documents \ visual studio 2010 \ projects \ fnptr \ fnptr \ fnptr.cpp 7
Ошибка 4 ошибка C2146: синтаксическая ошибка: отсутствует ';' перед идентификатором 'sFunPtr' c: \ users \ saurabh17g \ documents \ visual studio 2010 \ projects \ fnptr \ fnptr \ fnptr.cpp 10
Ошибка ошибки 5 Ошибка C4430: спецификатор отсутствующего типа - предполагается int. Примечание: C++ не поддерживает default-int c: \ users \ saurabh17g \ documents \ visual studio 2010 \ projects \ fnptr \ fnptr \ fnptr.cpp 10
Ошибка ошибки 6: C4430: отсутствует спецификатор типа - int. Примечание: C++ не поддерживает по умолчанию-INT C: \ Users \ saurabh17g \ Documents \ Visual Studio 2010 \ Projects \ fnptr \ fnptr \ fnptr.cpp 10
Если я комментирую первый ЬурейеЕ и раскомментируйте второй ЬурейеЕ
Ошибка 4 ошибка C2039: 'sFunPtr': не является членом `gInStruct 'c: \ users \ saurabh17g \ documents \ visual studio 2010 \ projects \ fnptr \ fnptr \ fnptr.cpp 31
Ошибка 1 ошибка C2146: синтаксическая ошибка : отсутствует ';' перед идентификатором 'sFunPtr' c: \ users \ saurabh17g \ documents \ visual studio 2010 \ projects \ fnptr \ fnptr \ fnptr.cpp 10
Ошибка ошибки 2 C4430: спецификатор отсутствующего типа - предполагается int. Примечание: C++ не поддерживает default-int c: \ users \ saurabh17g \ documents \ visual studio 2010 \ projects \ fnptr \ fnptr \ fnptr.cpp 10
Ошибка ошибки 3 C4430: спецификатор отсутствующего типа - предполагается int. Примечание: C++ не поддерживает default-int c: \ users \ saurabh17g \ documents \ visual studio 2010 \ projects \ fnptr \ fnptr \ fnptr.cpp 10
Пожалуйста, дайте мне знать возможный ответ. Заранее благодарен, Saurabh
Спасибо asaelr .. Это сработало! Однако была еще одна ошибка. Определение указателя функции не содержало ссылки на структуру. –