5章がよくわからないんですが…

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
matatabi403

5章がよくわからないんですが…

#1

投稿記事 by matatabi403 » 16年前

extern宣言と変数宣言は具体的にどの文章を削除すればいいのでしょうか?

s-rush

Re:5章がよくわからないんですが…

#2

投稿記事 by s-rush » 16年前

「main.cpp」「graph.cpp」「load.cpp」のそれぞれにグローバル変数が宣言されていると思います。
その宣言を削除するといいです。
またexternで宣言されている部分もありますが、(正確には宣言ではないですが)
その箇所も同様に削除します。

同様に関数宣言も削除すればOKです。

具体的には、
main.cpp

//現在のキー入力処理を行う
extern int GetHitKeyStateAll_2();
//受け取ったキー番号の現在の入力状態を返す
extern int CheckStateKey(unsigned char Handle);

//データのロード
extern void load();

//描画メイン
extern void graph_main();

int img_ch[2][12]; //キャラクタ画像9枚分 X2(変身用)
ch_t ch; //キャラクタデータ宣言

graph.cpp

extern ch_t ch;
extern int img_ch[2][12];

load.cpp

extern int img_ch[2][12];

ですね。

box

Re:5章がよくわからないんですが…

#3

投稿記事 by box » 16年前

> またexternで宣言されている部分もありますが、(正確には宣言ではないですが)

externは、「どこか別のファイルで定義してある変数をここで使います」という
「宣言」ではないのでしょうか。

変数の、
実体確保を伴うのが「定義」、
実体確保を伴わないのが「宣言」、
と理解していましたが、間違えているでしょうか。

s-rush

Re:5章がよくわからないんですが…

#4

投稿記事 by s-rush » 16年前

>>externは、「どこか別のファイルで定義してある変数をここで使います」という
>>「宣言」ではないのでしょうか。
少し前に別の掲示板で
 externは別ファイルに定義してるから宣言ではない
と思いっきりたたかれたことがあったので、「宣言」とは別物という認識したのですが^^;
(↑あまりにもひどかったので正直へこみました)

実際のことろはどうなんでしょうか?

toyo

Re:5章がよくわからないんですが…

#5

投稿記事 by toyo » 16年前

自信はないですが
int A;
が変数の宣言および定義で
extern int A;
は変数の宣言のみだと思います

box

Re:5章がよくわからないんですが…

#6

投稿記事 by box » 16年前

>toyoさん

定義と宣言とを兼ねるということはないと思います。たぶん。おそらく。
変数については、定義するか宣言するかのいずれか一方だけが
できるのではないでしょうか。

SCI

Re:5章がよくわからないんですが…

#7

投稿記事 by SCI » 16年前

> 定義と宣言とを兼ねるということはないと思います。たぶん。おそらく。
定義されたものは同時に宣言されています。
逆は成り立ちません。
toyoさんの言うとおり、変数宣言のみの記述を実現するにはexternを使用します。
実際には内部結合と外部結合の違いやCとC++でのグローバルオブジェクトの結合性とも関連するので、語弊があるかも知れません。

閉鎖

“C言語何でも質問掲示板” へ戻る