[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
Re: [MD:7362] Re: 整数のビット数
- X-ml-count: 7370
- Subject: Re: [MD:7362] Re: 整数のビット数
- From: "Shun-ichi GOTO" <shunichi.goto@xxxxxxxxx>
- Date: Fri, 14 Jul 2006 17:20:28 +0900
On 7/14/06, KOSEKI Yoshinori 小関 吉則 <kose@xxxxxxxxxxx> wrote:
> VALBITS が 29 なら signed intager を 29 bit にしてるように思
> えるのだけど。(何故に compiler で変わる?)
compilerで変わる理由はわかった。
gcc の場合は lisp.h:372 の
#define XINT(a) (((EMACS_INT) (a)) >> GCTYPEBITS)
が使われるけど、msvc の場合は lisp.h:406の
#define XINT(a) ((((EMACS_INT) (a)) << (BITS_PER_EMACS_INT - VALBITS)) \
>> (BITS_PER_EMACS_INT - VALBITS))
が使われるからですね。
前者はVALBITSによらないけど、後者はVALBITSが少ないと最上位ビットが
つぶされてしまう。なので、msvcでは28bitになってしまう。
なのでやはりVALBITSの定義が正しくないことが根本原因ですね。
--
Shun-ichi GOTO