Sahara's WebLog

日記のような、備忘録のような、うらみつらみのような、自慢のような…。

グローバル変数とextern

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だけを削除したら警告も出なくなって無事ビルドできた。
実行結果も意図した通りになってちゃんとグローバル変数として使われているようだ。

このエントリーをはてなブックマークに追加

Posted under: Code Configurator, 電子工作その他


コメントを残す

メールアドレスが公開されることはありません。

Time limit is exhausted. Please reload CAPTCHA.