電子書籍の厳選無料作品が豊富!

static宣言を複数のソースファイルで共有したいと考え以下のようなプログラムになりました
やはりstaticの共有は無理でしょうか。

リソースファイルの記載内容
static HANDLE hInfoData;


関数と関数1は同じソースファイル

void関数(){
hInfoData = CreateFile(・・・)



void関数1(){
関数();
ここではhInfoDataが有効
}


別のソースファイル
リソースファイルをインクルード
void関数2(){
ここではhInfoDataがNULLになる
}

A 回答 (13件中11~13件)

要するにhInfoDataがグローバル変数で、複数のソースファイルで同じ変数として利用できるようにしたい、ってことですよね?


普通にexternを使い、実体を1ファイルだけでグローバルセクションに「HANDLE hInfoData;」と宣言すればいいと思いますけど?

>staticを付けない変数はexternで複数のソースで参照できます、この場合変数の値がいつの間にか空白になるのです、この防止策を教えてください。

いつの間にか空白に「なる」のではなく、いつの間にか空白に「している」のではないでしょうか?
    • good
    • 0
この回答へのお礼

早速の回答、ありがとうございます。
なぜ、変数のフォーカスがサラワレルのか不思議です、このためstaticで解決しています。

プログラムで立ち上げ時に一度だけ初期設定した後は、書き込みはせず読み出すだけなのにです、不思議です!!

お礼日時:2018/05/21 10:33

リソースファイル?


ヘッダファイルじゃなくて?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
>リソースファイル?
これは間違っていました、ヘッダーファイルです。
ヘッダーファイル名がリソース.hになっています。

お礼日時:2018/05/21 08:43

「static宣言を複数のソースファイルで共有したい」がどういうことをしたいのかわからないのですが....



(関数の外で) static を付けて定義した変数はそのコンパイル単位 (ソースファイル) でしか見えないことはわかってますよね?
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
staticはソース固有はわかっていますが、staticな変数を複数のソースで参照したいのです、staticを付けない変数はexternで複数のソースで参照できます、この場合変数の値がいつの間にか空白になるのです、この防止策を教えてください。

お礼日時:2018/05/21 08:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!