extern を整理する | とある外資系プログラマーのブログ

とある外資系プログラマーのブログ

このブログは、主に開発に関する備忘録を共有する場所です。プログラムのコーディング、問題の解決、技術的な発見、そして学んだことを記録しています。開発者やエンジニアのための情報を提供する一方で、その他の興味深いトピックにも触れています。

グローバル変数を各モジュール毎にextern宣言して使用しているのを良く見ますよね。
でもこれってチョー面倒なので、
下記の様にextern宣言を上手に使うことによって、
グローバル変数の宣言を、ひとつのincludeファイルに簡単にまとめられます。

ぜひ、試してください!!

○sample.h


#ifndef _SMPLE_H_
#define _SMPLE_H_




/* __MAIN_EXTERN__ が宣言された場合、extern を無効にする*/
#ifdef __MAIN_EXTERN__
 #define extern
#endif

extern int g_nData;
extern int g_nList;

/* extern を元に戻す*/
#ifdef __MAIN__
 #undef extern
#endif


#endif /* _SMPLE_H_*/



○sample1.c


/* __MAIN_EXTERN__をdefineして実態を作る。*/
#define __MAIN_EXTERN__

#include sample.h

void funcA(voic){
  g_nData ++;
  g_nList ++;



}



○sample2.c


/* sample.hをインクルードするだけで、g_nData 等のグローバル変数が使用できる*/
#include sample.h

void funcB(voic){
  g_nData ++;
  g_nList ++;



}