構造体を別の構造体に代入すると、コンパイラーが構造体の型を認識しないという、一部の C コードでよく見られる問題が発生しています。さまざまな typedef と構造体をいたるところに配置しようとしましたが、まだ血まみれのものをコンパイルすることができず、今では木の森を見ることができなくなりました。助けてください。
typedef struct Option Option; //fwd decl
typedef struct OptionsList OptionsList;
typedef struct OptionsList {
struct Option* Option;
struct OptionsList* Next; // presumably this is anonymous
} OptionsList;
typedef struct Option {
CHARPTR Name;
CHARPTR Value;
struct OptionList* children;
} Option;
struct OptionsList* OptionsList_Create(Option* Option);
struct Option* Options_Create(CHARPTR Name, CHARPTR Value) {
struct Option* option = (struct Option*) malloc(sizeof(struct Option));
**option->children = OptionsList_Create(NULL);** // <- ARRRRRGGGGGHHHHHH!!!!!!!
return option;
}
警告は次の行から来ています:
option->children = OptionsList_Create(NULL);
そして警告は
警告 C4133: '=': 互換性のない型 - 'OptionsList *' から 'OptionList *' へ
Vs2012 update 2012 - プロジェクトは C (/TC) としてコンパイルされています
どうもありがとう。