プロが教えるわが家の防犯対策術!

C++のビギナーなのですが、
普通の変数、配列のexternはできているのですが、
構造体をexternができずに困っています。

2時間ほど調べまわったのですが、
typedefを使わなければならない(?) とか
構造体は変数なんかと違い、特別なやり方をしないとダメらしい事までは解ったのですが、
実際動くやり方を見つけきれませんでした;

方法(手順)や、解説サイトなどをご存知でしたら、教えて頂けると幸いです。

A 回答 (4件)

まさか, 「実体を定義していない」というオチはないよなぁ....

    • good
    • 1
この回答へのお礼

すみません、そのまさかでした;
値を入れる関数を通過したあとでexternしたら普通にできました;

externする場合、一番初めに宣言しなければならないと思い込んで
値入れられないけどタグ名付けたし、ここで呼ぶしか・・等と考えてしまって
やらかしてたみたいです。 orz

そして 構造体 extern のキーワードで検索して見て回ってたサイトは
きっと別の情報だったのですね・・。
お騒がせして申し訳ありませんでした。
無事解決できました。有難うございました。 っ_ _)っ

お礼日時:2009/03/26 03:55

構造体の定義そのものをexternとかしてるんじゃないですよね


何に対してexternを付けられるのかわかってますか

この回答への補足

すみません、
「構造体の配列」にexternをつけるとエラーが出てしまいます。
extern struct panel panels[35];
このようにすると

error LNK2001: 外部シンボル ""struct panel * panels" (?panels@@3PAUpanel@@A)" は未解決です。
error LNK1120: 外部参照 1 が未解決です。

とエラーが出てしまいます。

補足日時:2009/03/26 01:42
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

お礼日時:2010/05/26 20:35

別に構造体が「特別なやり方をしないとダメ」ということはないです. もちろんその変数の型がわからないといけないんですが, ちゃんと構造体を定義しておけば extern できます.


例えば, ヘッダに
struct some_struct {
int member1;
double member2;
char *member3;
};
extern some_struct a_struct;
とあれば, これを #include したファイルで a_struct を使うことができます.
    • good
    • 0
この回答へのお礼

構造体そのものはそのままで使えたのですね。
ありがとうございます。

お礼日時:2009/03/26 02:18

>普通の変数、配列のexternはできているのですが、


>構造体をexternができずに困っています。

どんなソースコードを書いたときに、
普通の変数や配列ではできたことが
構造体ではできないのでしょうか?
構造体だからといって特別扱いする必要はないです。
    • good
    • 0
この回答へのお礼

「構造体の配列」にexternをつけるとエラーが出てしまいます。
extern struct panel panels[35];
このようにすると
externが無ければ正常に動くのですが、

error LNK2001: 外部シンボル ""struct panel * panels" (?panels@@3PAUpanel@@A)" は未解決です。
error LNK1120: 外部参照 1 が未解決です。

とエラーが出てしまいます。

お礼日時:2009/03/26 01:51

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

このQ&Aを見た人はこんなQ&Aも見ています