emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: bookkeeping to prepare for a 64-bit EMACS_INT on 32-bit hosts


From: Eli Zaretskii
Subject: Re: bookkeeping to prepare for a 64-bit EMACS_INT on 32-bit hosts
Date: Sat, 30 Apr 2011 10:30:11 +0300

> Date: Fri, 29 Apr 2011 23:54:50 -0700
> From: Paul Eggert <address@hidden>
> CC: address@hidden
> 
> On 04/29/11 02:06, Paul Eggert wrote:
> > I will look into extending that patch, so that it also works with
> > __int64.
> 
> Here's one way to do that.  Add this to nt/config.nt,
> after the BITS_PER_LONG definition:
> 
> #if (defined __MINGW32__ \
>      || 1400 <= _MSC_VER || (1310 <= _MSC_VER && defined _MSC_EXTENSIONS))
> /* C99-style long long and "%lld" both work, so use them.  */
> # define BITS_PER_LONG_LONG 64
> #elif 1200 <= _MSC_VER
> /* Use pre-C99-style 64-bit integers.  */
> # define EMACS_INT __int64
> # define BITS_PER_EMACS_INT 64
> # define pI "I64"
> #endif

Thanks!

> I inferred the above by looking at random stuff
> off the net, and haven't actually tested it; quite possibly
> it's not exactly right for Emacs but something like this should work.

I think it is correct, except for one minor gotcha: _MSC_EXTENSIONS do
NOT enable a `long long' data type in versions of MSVC before 1400.
_MSC_EXTENSIONS enable the use of __int64 in all versions of the MS
compiler.  Also, _MSC_EXTENSIONS is on by default, so there's no need
to test for it explicitly.  According to my reading of the MS
documentation, the `long long' data type is supported by MSVC only
starting from version 1400; before that, we should use __int64.

So I would change the above to say

#if (defined __MINGW32__ || 1400 <= _MSC_VER)
/* C99-style long long and "%lld" both work, so use them.  */
# define BITS_PER_LONG_LONG 64
#elif 1200 <= _MSC_VER
/* Use pre-C99-style 64-bit integers.  */
# define EMACS_INT __int64
# define BITS_PER_EMACS_INT 64
# define pI "I64"
#endif

> Also, I plan to simplify the rats-nest of EMACS_INT ifdefs in lisp.h
> to the following.  This should make this stuff easier to follow.

That'd be fine, thanks.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]