externについて

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

externについて

#1

投稿記事 by O.N » 16年前

いつもお世話になっています。「龍神録のプログラミング」の第六章におきまして、
不明な箇所がありましたので、質問させていただきます。

(前略)
//メインループ
while(ProcessLoop() == 0){
switch(func_state){
case 0:
load(); //データロード
first_ini(); //初回の初期化
func_state = 100;
break;

case 100:
graph_main(); //描画メイン
break;

default:
printfDx("不明なfunc_state\n");
break;
}
(略略・・・)

ここの部分なのですが、
このswitch(func_state)の制御文に当たる func_stateは
どこを見ても初期化されていなかった(様に見えた)のですが、なぜか初期値に0が入っています。
(case 0を実行しているので、おそらく0が代入されているのでしょうが…)
func_stateは ヘッダーファイルで、extern int func_state; と宣言されているだけです。
extern宣言されたものは、勝手に初期値0が入るということでも起こっているのでしょうか?
ご返答よろしくお願いします。

SCI

Re:externについて

#2

投稿記事 by SCI » 16年前

確か、グローバル変数は0で初期化されることがC言語の規格で保証されていたはずです。
それはC++でも同じだと思います。詳しいことはC/C++言語仕様を参照してください。

O.N

Re:externについて

#3

投稿記事 by O.N » 16年前

SCI様、御返答ありがとうございます。
そうだったのですか。やはり、といった感じですね。
実行結果からいえば、それ以外は考えられなかったですが・・・
コメント通りにC/C++言語仕様をネットでもって見てみます。
こんな遅くに返答していただき、ありがとうございました。m(_ _)m

閉鎖

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