1時間ごとに更新!Amazon.co.jpで今売れている本トップ100   ショッピングモール


掲示板利用宣言

 次のフォームをすべてチェックしてからご利用ください。

 私は

 題名と投稿者名は具体的に書きます。
 課題の丸投げはしません。
 ソースの添付は「HTML変換ツール」で字下げします。
 返信の引用は最小限にします。
 環境(OSとコンパイラ)や症状は具体的に詳しく書きます。
 返信の付いた投稿は削除しません。
 マルチポスト(多重投稿)はしません。

掲示板1

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧

No.5459

#define について
投稿者---takeshi(2006/02/20 18:02:05)


はじめまして
私はC言語を始めたばかりの者です。
下記の関数の( 〜 )までの部分の意味がわかりません。御教示の程宜しくお願いいたします。

#define P5DDR (*(volatile unsigned char*)0xfffc8)



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:#define について 5460 wis 2006/02/20 19:06:13
<子記事> Re:#define について 5461 nop 2006/02/20 20:24:44
<子記事> Re:#define について 5462 Hermit 2006/02/20 21:49:34


No.5460

Re:#define について
投稿者---wis(2006/02/20 19:06:13)


>はじめまして
>私はC言語を始めたばかりの者です。
>下記の関数の( 〜 )までの部分の意味がわかりません。御教示の程宜しくお願いいたします。
>
>#define P5DDR (*(volatile unsigned char*)0xfffc8)

わたしには「下記の関数」がどこにあるのかわかりません。
何が知りたいのかもわかりません。
volatile修飾子がわからないのか
これを定義している意味が分からないのか

初心者ということならとりあえず、
このような構文を使用するプログラムを書くことは
まずないでしょうから、このHPを参考に
まずは define と関数について学ばれるべきだと感じます。

#P5DDRが何を指してるかわからないっていうのなら
#ここでP5DDRはアドレス0xfffc8の中身を指してる?としか。。。


この投稿にコメントする

削除パスワード

No.5461

Re:#define について
投稿者---nop(2006/02/20 20:24:44)


>下記の関数の( 〜 )までの部分の意味がわかりません。御教示の程宜しくお願いいたします。
>#define P5DDR (*(volatile unsigned char*)0xfffc8)

これは、関数ではありません。

 ソースコード中の「P5DDR」と言う記述を「(*(volatile unsigned char*)0xfffc8)」に置換した後、コンパイルして下さい。

と言うx、プリプロセッサ命令です。


この投稿にコメントする

削除パスワード

No.5462

Re:#define について
投稿者---Hermit(2006/02/20 21:49:34)


>#define P5DDR (*(volatile unsigned char*)0xfffc8)

0xfffc8 を、ポインタであらわしたアドレスの実体を指します。

多分そのアドレス 1byte に I/O などがあって、それを直接値を変えたいのではないでしょうか。

わざわざ、volatile 修飾子を付けているのは、
コンパイラの最適化によって、アクセス回数が最適化される事があるため、それを防ぐためです。



この投稿にコメントする

削除パスワード

No.5463

Re:#define について
投稿者---nop(2006/02/20 22:33:01)


>>#define P5DDR (*(volatile unsigned char*)0xfffc8)
>わざわざ、volatile 修飾子を付けているのは、
>コンパイラの最適化によって、アクセス回数が最適化される事があるため、それを防ぐためです。

この場合、H8のP5DDRレジスタを指しているため、
H/W要因で変更される可能性がある事をコンパイラに知らせています。

こうする事で、ループの中などでも汎用レジスタに退避した値ではなく、
P5DDRレジスタの内容を毎回読み出す様になる事を期待するわけです。


この投稿にコメントする

削除パスワード

No.5464

Re:#define について
投稿者---nop(2006/02/20 23:04:07)


>この場合、H8のP5DDRレジスタを指しているため、

[訂正]
H8と書いたのは、レジスタ名からの推測でした。
「質問者の元ソースのコードに対応した環境の」などと言う具合に、
脳内補完して下さい。m(_ _)m


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    記事検索    ログ    タグ一覧




掲示板提供:Real Integrity