[H8-ML(5098)] Re: Re:関数名では無くアドレスに直接飛ぶには
From: Junsuke Kunugiza <jk@xxxxxxx>
Date: 2004年11月19日(金)11時17分37秒
椚座です。

On Fri, 19 Nov 2004 10:56:35 +0900
"Koji Takeuchi" <ktakeuchi@xxxxxxxxxxxxxxxxx> wrote:

> リストの皆様へ自己レスで御座います。
> 
> HIMにてコンパイルした結果です。
> その記述により飛ばなかったり飛んだりすることが分かりました。
> 
> #define Func_1   ((void (*)(void))0x600) ----------------(1)
> 
> #define Func_1   ((void (*)())0x600)() ------------------(2)

(1) の #define では,うしろの () がないので呼び出しにはなりません。
これだけを書いても,コンパイルのときに,無意味なものとして省かれます。
逆にいえば,() を付けてやればよいので,使うときには Func_1(); という
ふうに () を付ける必要があります。(2) の場合は,#define のなかに
() が含まれているので,改めて () を付ける必要はなく,Func1; だけで
呼び出しになります。

どちらの書き方も正しいのですが,コード中で,いきなり Func_1; が
出てきても意味が分かりにくいと思うので,(1) の方を使ってあとから
() を付ける方が好ましいかな。


椚座 淳介 (Junsuke Kunugiza)
E-Mail: jk@xxxxxxx  http://www.exp.org/

スレッド概略
[5091(R)](起点)
 └[5096(U)]
   └[表示中]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]