「C言語/データ型と変数の高度な話題」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
→‎extern: ヘッダーに外部参照宣言を分離し、定義側でも読み込む。
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
→‎static: cleanup
タグ: 2017年版ソースエディター
140 行
 
=== static ===
ファイル有効範囲( file scope )をもつオブジェクト(変数や配列など)や関数を記憶域クラス指定子 static 使う伴って宣言することで、そのオブジェクトや関数を内部結合とし他のソースファイル翻訳単位から隠ぺい参照できなくすることができます
また、ブロック有効範囲のオブジェクトを記憶域クラス指定子 static 使う伴って宣言することで、そのブロック静的記憶域期間(''static storage duration'')含む関数もたせること再び呼びされた時値が保されているよう期間はプログラム実行の全体なります。その値はプログラム開始処理の前に1回だけ初期化しま
 
<syntaxhighlight lang="C">
188 行
 
{{See also|[[#extern]]}}
 
以下、やや難しい解説。
 
記憶域クラス指定子staticを伴って宣言されたファイル有効範囲のオブジェクト(変数や配列など)または関数に対する識別子は、内部結合をもつ。
記憶域クラス指定子staticを伴って宣言されたブロック有効範囲のオブジェクトは、無結合である。
記憶域クラス指定子staticを伴って宣言されたブロック有効範囲の関数はない。
<ref name="識別子の結合"/>
 
記憶域クラス指定子staticを伴って宣言された識別子のオブジェクトは、静的記憶域期間をもつ。
その生存期間はプログラム実行の全体とする。
その値はプログラム開始処理の前に一回だけ初期化する。
<ref name="オブジェクトの記憶域期間">『JISX3010:2003』p.24「6.2.4 オブジェクトの記憶域期間」</ref>
 
=== auto ===