MCCを使ってコードを作成すると、当然ながらプロジェクトは複数のファイルに分散することになる。
1から自分で作ると全部main.cに書いてしまうので気にもしていなかったが、複数のファイルにまたがる場合のグローバル変数の宣言にはexternをつけるのだそうだ。
斜めに検索した限りでは、
hoge.h
とかのヘッダファイルを用意して、これに
extern usigned char hogehoge;
とか書いておいて、各ファイルでこのヘッダ・ファイルをインクルードするのだそうだ。
#include “hoge.h”
だが、やってみたら、hoge.hがありませんぜとエラーが出てビルドできない。
調べてみても原因がわからない。
仕方がないので、ヘッダ・ファイルは使わずに、必要なファイルすべてに
extern usigned char hogehoge;
と書いた。
すると
main.c:23:22: warning: ‘hogrhogr’ initialized and declared ‘extern’ [enabled by default]
extern unsigned char hogehoge = 0;
という警告が出る。
この行のexternだけを削除したら警告も出なくなって無事ビルドできた。
実行結果も意図した通りになってちゃんとグローバル変数として使われているようだ。