MW211 EXIT

devlog
C言語/定義と宣言の違い
2014年06月21日
C言語において、変数定義と変数宣言は違う。
  「定義」…「領域を確保する」
  「宣言」…「(存在を知らせるだけで)領域を確保しない」

externするグローバル変数は、実体がなければならない。
┌──────────────────────────────────────┐
│int グローバル変数 = 0;                                                     │
└──────────────────────────────────────┘
これが変数定義。

一方、ヘッダファイル等を通じてこれをexternすることができる。
┌──────────────────────────────────────┐
│extern int グローバル変数;                                                  │
└──────────────────────────────────────┘
これが変数宣言。
この場合、初期値を代入できないのは、定義じゃないからだ。

ちなみに、関数の処理がない方は、関数宣言となる。
┌──────────────────────────────────────┐
│static void  func(void);                                                    │
└──────────────────────────────────────┘
処理を書いている方は、関数定義となる。
┌──────────────────────────────────────┐
│static void  func(void) {                                                   │
│    // 処理;                                                                │
│}                                                                           │
└──────────────────────────────────────┘
分類:C/C++