最近私はC++(+DXライブラリ)を使用したプログラムの勉強と練習として東方を真似たシューティングゲームを作っているのですが、
そんな中「extern」の存在を知りました。
そこで皆さんに伺いたいのですが、
現在私は、例えば「Player.cpp」にある自機構造体の「x」と「y」という自機座標の変数の値を、 と、関数を使用して値を渡してやってます。
しかし、私がこの掲示板やWebで調べた限りでの「extern」の使用用途は、所謂C#での、
//Player.cs
//~省略~
public float Player_x;
public float Player_y;
Player_x = 100.0f;
Player_y = 100.0f;
//~省略~
//Bullet.cs
//~省略~
public float Bullet_x;
public float Bullet_y;
Bullet_x = Player.Player_x;
Bullet_y = Player.Player_y;
//~省略~
ただ、「extern」を使用した場合はどうやら、「どっかのcppファイルにある『Player_x』という変数」のように、全てのファイル総探りで変数を見つけてその値を使うようなので、変数にはきちんと「どの変数なのか明らかな、また唯一の変数名」にしなければならないようですが。
そこで、コードを上記の「Player.cpp」での関数を使用したやり方でなく、「extern」を使用して書きなおしてみました。
ソースコードの動作意図は、「自機座標を、弾の座標変数に代入してやる」です。
//~省略~
//自機構造体
extern Ch_t Ch;
//~省略~
//弾構造体のそれぞれの座標変数に自機座標変数を代入
Bul[i].x = Ch.x;
Bul[i].y = Ch.y;
//~省略~
本当にこのような使い方で合っているのか皆さんに確認を頂きたいです。
よろしくお願いいたします。
長文失礼しました。