インクルードファイルから変数参照


山手  2005-08-23 04:05:51  No: 58717

a.hというファイルを用意し、そこに
int a; 
のように変数を宣言して、
a.hをインクルードしたファイルならどれでもaを使えるようにするにはどうすればよいのでしょうか?

したい機能としては、色々なファイルから使用することのできる変数の定義です。

類似したものでもかまいませんので、わかるようでしたらご教授のほど宜しくお願いします。


まきじ  2005-08-23 04:09:14  No: 58718

一つの C ファイルに、int a と定義し、他の C ファイルには
extern int a としてやれば良い。


山手  2005-08-23 06:43:21  No: 58719

まきじ様、ご返答ありがとうございます。

色々なサイトなども調べてはみたのですが、
externの使い方なのですが

>一つの C ファイル
というのをヘッダファイルと考え、そこに 
extern int a; 
とおき、
他の C ファイル(cppですが同じですよね・・?)の、関数などを宣言してあるヘッダファイルに
int a;

と宣言したのですが、エラーがでます。
上のcppファイルに定義した場合も同様です。

これがいわゆる多重定義だと思うのですが、これ以外にやりかたがわからず困っております。

もう少し詳しく教えていただけないでしょうか。
申し訳ありません。


RAPT  2005-08-23 07:26:04  No: 58720

ヘッダファイルには、extern int a; とし、
ある一つのC/CPPファイルにだけ int a; とします。
externをつけない専用のC/CPPファイルを利用する方法もあります。

これをヘッダファイルに書いてしまうと、複数箇所から#includeされて
しまいがちになります。


まきじ  2005-08-23 07:53:40  No: 58721

>ヘッダファイルと考え、そこに extern int a; とおき
>他の C ファイル(cppですが同じですよね・・?)の、関数などを宣言してあるヘッダファイルに int a;

int a は定義なので、どこか一箇所です。
複数の C ファイルに include されているヘッダーファイルに
定義してしまうと多重定義になります。

extern int a で ある一つの C ファイルに定義されてる
 a と同じオブジェクトを参照することを宣言してあげます。


まきじ  2005-08-23 08:38:47  No: 58722

>多重定義になります。

ヘッダーファイルに定義されてる関数などが。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加