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


山手  2005-08-22 19:05:51  No: 58717  IP: 192.*.*.*

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

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

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

編集 削除
まきじ  2005-08-22 19:09:14  No: 58718  IP: 192.*.*.*

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

編集 削除
山手  2005-08-22 21:43:21  No: 58719  IP: 192.*.*.*

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

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

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

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

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

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

編集 削除
RAPT  2005-08-22 22:26:04  No: 58720  IP: 192.*.*.*

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

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

編集 削除
まきじ  2005-08-22 22:53:40  No: 58721  IP: 192.*.*.*

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

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

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

編集 削除
まきじ  2005-08-22 23:38:47  No: 58722  IP: 192.*.*.*

>多重定義になります。

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

編集 削除