変数について・・・

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

変数について・・・

#1

投稿記事 by BRACK PENIKX » 15年前

私はまだCを勉強してまもなく、本当に初歩的だと思うので恥ずかしいのですが・・・

main.cpp
abc.cpp
xyz.cpp

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

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

Dixq (管理人)

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

#2

投稿記事 by Dixq (管理人) » 15年前

分割コンパイルを覚えると最初に躓くことですよね。

例えば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したファイルから呼び出せるようになります。

参考までに

BRACK PENIKX

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

#3

投稿記事 by BRACK PENIKX » 15年前

ありがとうございます!
早速ためしてみます

Dixq (管理人)

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

#4

投稿記事 by Dixq (管理人) » 15年前

補足です。

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

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

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

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

BRACK PENIKX

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

#5

投稿記事 by BRACK PENIKX » 15年前

 どうもありがとうございます(^ ^)

閉鎖

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