extern宣言について

externは変数共有 組込みエンジニアとしての活動

はじめに

 日ごろから気になっていたことをで、extern宣言を記述することについて疑問があり、それについて、MISRA-Cを調査で少しわかりましたので、記述します。

プロトタイプ宣言は通常、関数を使用する前に行います.

プロトタイプ宣言の主な目的は以下の通りです:

  1. コンパイラに関数の存在を知らせる
  2. 関数の戻り値の型と引数の型を事前に宣言する
  3. コンパイル時の型チェックを可能にする

プロトタイプ宣言を使用することで、以下の利点があります:

  • コードの可読性が向上する
  • 関数の呼び出し順序を気にせずにコードを書ける
  • 型の不一致によるエラーを未然に防ぐことができる

一般的な慣行として、プロトタイプ宣言はソースファイルの先頭や、ヘッダファイル内に記述されます. これにより、複数のソースファイル間で関数を共有しやすくなり、コードの保守性も向上します.

プロトタイプ宣言の例:

cint add(int a, int b);  // プロトタイプ宣言

int main(void) {
    int result = add(5, 3);  // 関数の使用
    return 0;
}

int add(int a, int b) {  // 関数の定義
    return a + b;
}

 この例では、add関数のプロトタイプ宣言がmain関数より前に行われており、コンパイラはadd関数の存在と型情報を事前に知ることができます

関数のプロトタイプ宣言は、externを付けた場合でも付けなかった場合でも同じ効果があります

中まとめ

上記の赤文字のプロトタイプ宣言は通常、関数を使用する前に行います.関数のプロトタイプ宣言は、externを付けた場合でも付けなかった場合でも同じ効果があります より、extern宣言をしなくても、プロトタイプ宣言をされているヘッダを使用前に記述すればプログラム上問題ないことがわかりました。

extern宣言の必要性

extern宣言は、複数のソースファイルにまたがるプログラムを効率的に構築する上で重要な役割を果たします。その必要性は以下の点にあります:

  1. 変数の共有: extern宣言により、あるファイルで定義されたグローバル変数を他のファイルで使用できるようになります. これにより、複数のファイル間でデータを共有することが可能になります.
  2. コンパイルエラーの回避: コンパイラはファイル単位で処理を行うため、extern宣言がないと他のファイルで定義された変数を認識できず、コンパイルエラーが発生します. extern宣言によって、コンパイラにその変数が外部で定義されていることを伝えることができます.
  3. コードの構造化: extern宣言を使用することで、変数の定義と使用を分離できます. これにより、プログラムの構造をより整理しやすくなり、保守性や可読性が向上します.
  4. リンクエラーの防止: 複数のファイルで同じ変数を定義すると、リンクエラーが発生します. extern宣言を適切に使用することで、このような問題を回避できます.
  5. ヘッダファイルの活用: extern宣言をヘッダファイルに記述し、複数のソースファイルでインクルードすることで、変数の宣言を一箇所にまとめることができます. これにより、コードの管理が容易になります.

 extern宣言を使用することで、大規模なプロジェクトでも変数の共有と管理を効率的に行うことができコードの品質と開発効率の向上につながります

まとめ

 自分の勘違いで、変数を共有するのに使用するという意味でした。関数では必要ないですね。書いていて納得しています。基本的ですが、理解が進みました。

[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

新・明解C言語 入門編 第2版 [ 柴田望洋 ]
価格:2,530円(税込、送料無料) (2025/2/28時点)


コメント

タイトルとURLをコピーしました