アプリ版:「スタンプのみでお礼する」機能のリリースについて

レベルの低い質問とは思いますが

struct st
{
int a;
int b;
};
void a(struct st *ST)
{
ST->a=1;
ST->b=1;
}
void main()
{
struct st ST;
a(&ST);
printf("%d%d",ST.a,ST.b);
getch();
}
これだと問題なく動作するのですが、ソースファイルを分割して
ソース1
void a(struct st *ST);
struct st
{
int a;
int b;
};
void main()
{
struct st ST;
a(&ST);
printf("%d%d",ST.a,ST.b);
getch();
}
ソース2
void a(struct st *ST)
{
ST->a=1;
ST->b=1;
}
だとエラーが返ってくるのがなぜなのか解りません
ソース2でも同じ構造体の宣言をしなければならないのでしょうか。
長くなり読みにくくなってしまいましたが、よろしくお願いします。

A 回答 (1件)

> ソース2でも同じ構造体の宣言をしなければならないのでしょうか。



そうですね。ソース2でこのままだと構造体がどんなものなのが、コンパイラには分からないんです。

こういう場合は構造体の宣言部分、すなわち、
struct st
{
int a;
int b;
};
の部分を別のファイルにします。(こういうのをヘッダファイルと言います。)
で、そのヘッダファイルの名前を例えば st.h とすると
ソース1とソース2の先頭に
#include "st.h"
と追加すれば解決します。
    • good
    • 0
この回答へのお礼

回答ありがとございました☆

いまやって見ましたら無事動きました。

お礼日時:2002/09/11 17:25

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!