山本です。 >>個人的には VALUE は void* にするのが適切であろうと思っています。 >>それは、AS/400 なるシステムではポインタと同じサイズの整数型が存在しな >>いということを知ってしまったというのが理由です。 > >同感です。 > > #define IMMEDIATE_P(x) ((VALUE)(x) & IMMEDIATE_MASK) > >とかしている部分がそのままでは動かないので、修正が必要そうですが。 ただ、こうすると typedef void* VALUE; struct hoge {int value;}; int main() { struct hoge h; VALUE v = &h; struct hoge *p = v; } というようにユーザ定義のオブジェクトを一時的に VALUE にしたいとき。 キャストが不要になってしまうので、バグが入りやすくなるのではないか という漠然とした不安があります。(杞憂かもしれませんが) # 今まではこうする必要があったので、ある意味イリーガルなことをしている # ことを意識できた。 typedef unsigned long VALUE; struct hoge {int value;}; int main() { struct hoge h; VALUE v = (VALUE)&h; struct hoge *p = (struct hoge *)v; } 5