C言語のローカル変数の使い方について質問です。
C言語の変数に関しての質問です。
グローバル変数を使わずに、関数内で宣言したローカルの変数を別のソースファイルで使用することって可能ですか?
例えば、a.cというソースファイルと、b.cというソースファイルがあります。
a.cの関数内で"FILE *fp;"と宣言したローカル変数を、b.cの関数内で共有して使うことはできるのでしょうか。
また、"fp"に直接アクセスはできなくても、間接的にアクセスできる方法があれば教えてください。
下に記述しているのは例え用に適当に書いたプログラムです。
---------------------
a.cのソースファイル
---------------------
void Temp(void)
{
char file_name[128] = {};
errno_t error;
FILE *fp; // ←この変数を別のソースで使いたいです
scnaf_s("%s", file_name, 128);
if(error = fopen_s(&fp, fname, "rb") != 0) {
printf("ファイルがオープンできません");
return 0;
}
fclose(fp);
}
---------------------
b.cのソースファイル
---------------------
void Temp2(void)
{
int size;
// ここでa.cのTemp関数で宣言されている"fp"を使いたい
fseek( fp, 0, SEEK_END );
fsize = ftell( fp );
fseek( fp, 0, SEEK_SET );
}
お礼
詳しい説明ありがとうございます。今回の場合はxxx_ext.h はあるのですが、xxx_ext.cがなくて、どこにグローバル変数をおいたらいいか困っていたところです。xxx_ext.cを作ればいいのですが、融通がきかないものでして。。。