構造体と関数ポインタの間の巡回依存関係のため、次のプログラムをコンパイルできません。循環依存関係 - 構造体と関数ポインタの相互参照
// 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のメンバーではありません:\ユーザー\ saurabh17g \ドキュメントをVisual Studioの2010 \ \プロジェクト\ fnptr \ fnptr \ fnptr.cpp 31
エラー3エラーC2062:予期しないC 'int型タイプ:プロジェクト\ Visual Studioの2010 \ \ユーザー\ saurabh17g \ドキュメント\ fnptr \ fnptr \ fnptr.cpp 7
エラー1エラーC2065: 'gStruct':宣言されていない識別子c:\ users \ saurabh17g \ docum 'のpStr':宣言されていない識別子C:\ Users \ユーザーsaurabh17gドキュメントは、Visual Studio 2010 \プロジェクト\ \ \ fnptr \ fnptr \エントは、Visual Studio 2010 \プロジェクト\ fnptr \ fnptr \ fnptr.cpp 7
エラー2エラーC2065を\しますfnptr.cpp 7
エラー4エラーC2146:構文エラー: ';'がありません。前の識別子 'sFunPtr' c:\ users \ saurabh17g \ documents \ visualスタジオ2010 \ projects \ fnptr \ fnptr \ fnptr.cpp 10
エラー5エラーC4430:型指定子がない - 想定されています。注:C++は、デフォルトのint c:¥users¥saurabh17g¥documents¥visual¥studio¥visual¥studio¥fnptr¥fnptr¥fnptr.cppをサポートしていません。10
エラー6エラーC4430:型指定子がありません。私は最初のtypedefとコメント解除二のtypedef
エラーをコメントする場合は、プロジェクト\ Visual Studioの2010 \ \ユーザー\ saurabh17g \ドキュメント\ fnptr \ fnptr \ fnptr.cpp 10
:注:C++は、デフォルト-int型のCをサポートしていません。 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スタジオ2010 \ projects \ fnptr \ fnptr \ fnptr.cpp 10
エラー2エラーC4430:タイプ指定子がない - 想定されています。注:C++はdefault-int c:¥users¥saurabh17g¥documents¥visual¥studio¥visual¥studio¥fnptr¥fnptr¥fnptr.cppをサポートしていません。10
エラー3エラーC4430:タイプ指定子がない - 想定されています。注:C++はdefault-intをサポートしていません。c:¥users¥saurabh17g¥documents¥visual studio 2010¥projects¥fnptr¥fnptr¥fnptr.cpp 10
可能な回答をお知らせください。 ありがとうございます。 Saurabh
ありがとうございました。しかし、もう1つのバグがありました。関数ポインタの定義に構造体への参照が含まれていませんでした。 –