構造体の宣言でエラーが出ます。
c言語を勉強中の初心者です。
プログラムで、struct structB; と宣言をしたのですがエラーになります。
このように、構造体にお互いの構造体を、要素にすることはできないのでしょうか。
どうすればエラーが出なくなるのでしょうか。
どなたかご教授ください
○プログラムリスト
#include <stdio.h>
struct structB;
struct structA {
double a;
struct structB b; /* エラー */
};
struct structB {
int c;
struct structA *d;
};
int main(void)
{
struct structA x = {3.2, {3, NULL}};
struct structB y = {2, NULL};
printf("%lf\n", x.a);
printf("%d\n", y.c);
return 0;
}
○実行例
C:\>cl.exe mytest.c
Microsoft(R) 32-bit C/C++ Standard Compiler Version 13.10.3077 for 80x86
Copyright (C) Microsoft Corporation 1984-2002. All rights reserved.
mytest.c
mytest.c(7) : error C2079: 'b' が 未定義の struct 'structB' で使用しています。
mytest.c(18) : error C2078: 初期化子の数が多すぎます。
C:\>
○実行環境
Microsoft WindowsXP Professional SP2
Microsoft Visual C++ .NET Standard Version 2003
お礼
回答ありがとうございます。 テンパっていましたが確認すると構造体型の宣言はちゃんと広域で使えました。 どうもクラスのインスタンスの中でこの構造体の定義を行っている所だけが 上手く行かなくらしく、このクラスの外では上手くいってました。 質問内容が根本的に間違っていると確認できたので 解決できない場合は改めて質問させて頂こうと思います。 ご回答ありがとうございました。