ページ 11

変数について・・・

Posted: 2010年7月27日(火) 23:22
by BRACK PENIKX
私はまだCを勉強してまもなく、本当に初歩的だと思うので恥ずかしいのですが・・・

main.cpp
abc.cpp
xyz.cpp

を作ったとして・・main.cpp abc.cpp xyz.cpp のどこでも利用できる変数はどう宣言すればいいのでしょうか・・・(汗

※Microsoft Visual C++ 2008 Express Editionを使用しています 画像

Re:初歩的なことなのですが・・

Posted: 2010年7月27日(火) 23:46
by Dixq (管理人)
分割コンパイルを覚えると最初に躓くことですよね。

例えばmain.cppでグローバル変数

int a;

を宣言したならば、

abc.cppで

extern int a;

と書けば、そのファイルでaが使用出来るようになります。
しかしグローバル変数を多用するのはあまり良くないという考え方があるので、なるべく少なくしたいものです。

こんな風にすればグローバル変数を使わなくても他のファイルの変数の値を取ってくる事が出来ます。

http://dixq.net/zip/console_test2.zip
(すみませんがVC++2010です)

sample.cppからtest.cppのグローバル変数を取ってくる時は、GetTestValue関数を使って取得しています。
ファイル名と同じ名前のヘッダファイルを作り、ヘッダファイルには関数のプロトタイプ宣言を技術します。
その関数を使いたいファイルでヘッダファイルをincludeすればヘッダファイルに書いた関数がincludeしたファイルから呼び出せるようになります。

参考までに

Re:初歩的なことなのですが・・

Posted: 2010年7月27日(火) 23:57
by BRACK PENIKX
ありがとうございます!
早速ためしてみます

Re:初歩的なことなのですが・・

Posted: 2010年7月27日(火) 23:59
by Dixq (管理人)
補足です。

より安全にグローバル変数を使いましょうという話の続きで、
変数や関数にstaticと付けることで他のファイルから参照出来なくする事が出来ます。

http://dixq.net/zip/console_test3.zip

こちらに簡単ですがサンプルを作ってみましたのでよろしければどうぞ

test.cpp,test.hのstaticを外せばsample.cppの注釈が消せるようになります。

Re:初歩的なことなのですが・・

Posted: 2010年7月28日(水) 00:33
by BRACK PENIKX
 どうもありがとうございます(^ ^)