スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

変数の型修飾

こんばんは

本日書かないと,まだしばらく更新しなくなりそうなので書きます.

みなさんは変数の型修飾を利用しているでしょうか?たとえばvolatileとかconstとかstaticとかexternです.

volatile : 最適化により変数が省略されることが無い
volatile char i; のように修飾します.main文と割り込み関数の両方から使う変数はvolatileで修飾したほうが良いです.

const : 定数にする.(定義とともに代入しなければならず,後で値を変更することはできない.ROMに保存される)
const char i = 65; のように修飾します.変数を確保するときにしか代入できません.なので,後で,
i = 64;をすると,コンパイルエラーとなります.

static : グローバル変数を,他のソースファイルからアクセスできなくする.また,ローカル変数をプログラムが終了するまで保持する.
static char i; のように修飾します.ソースファイルを分けてプログラミングしてる人には非常に重要な修飾詞です.まずは,グローバル変数を修飾した場合です.別のソースファイルからstaticで修飾した変数は見えなくなるので,隠蔽化に非常に重要です.これが無ければ,たまたま同じ名前でextern宣言されていると意図せず変数にアクセスされてしまいます.グローバル変数には必ずstaticをつけるつもりでプログラミングしましょう!続いてローカル変数を修飾した場合です.ローカル変数は通常,関数を出るとその値は保持されません.再び関数が呼び出されたとき,そのローカル変数の値は不定となります.しかし,staticで修飾していると関数を抜けても値が保持されます.これは使い方によっては非常に便利です.たとえば,関数が呼び出された関数をカウントできるとかですかね.

extern : このソースファイル内では変数は定義されていないが,どっかのソースファイルで変数が定義されていることを示す.
extern char i; のように修飾します.externをつけた場合変数の実態(メモリ)は確保されません.どっかのソースファイルにありますよ.という宣言になります.(宣言と定義の違いがわからない人は調べましょう!)裏を返すと,これが無ければ他のソースファイルに書かれているグローバル変数にアクセスすることができません.他のソースファイルのグローバル変数にアクセスするときは,型をexternで修飾して宣言しましょう.

まあ,詳しいことは"型修飾"とでも検索してGoogle先生に教わりましょう.

↓以下ポインタ(用法用量お守りください)


では,この型がどんな型かわかりますでしょうか?(グローバル変数であるとします)

const static unsgined char *const i = 0;

正解は,”他のソースファイルから見えない定数である符号なしの8bit整数型変数”の”定数であるポインタ変数”
深遠なるポインタの世界へようこそ
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

tennisyi

Author:tennisyi
現在、東京理科大学miceに所属しており、マウスを制作しています。
目指せハーフマウス脱初心者!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。