[Top][All Lists]
[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.
- Re: bookkeeping to prepare for a 64-bit EMACS_INT on 32-bit hosts, (continued)
- Re: bookkeeping to prepare for a 64-bit EMACS_INT on 32-bit hosts, Paul Eggert, 2011/04/29
- Re: bookkeeping to prepare for a 64-bit EMACS_INT on 32-bit hosts, Eli Zaretskii, 2011/04/29
- Re: bookkeeping to prepare for a 64-bit EMACS_INT on 32-bit hosts, Stefan Monnier, 2011/04/29
- Re: bookkeeping to prepare for a 64-bit EMACS_INT on 32-bit hosts, Eli Zaretskii, 2011/04/29
- Re: bookkeeping to prepare for a 64-bit EMACS_INT on 32-bit hosts, Lars Magne Ingebrigtsen, 2011/04/29
- Re: bookkeeping to prepare for a 64-bit EMACS_INT on 32-bit hosts, Paul Eggert, 2011/04/29
- Re: bookkeeping to prepare for a 64-bit EMACS_INT on 32-bit hosts, David De La Harpe Golden, 2011/04/29
- Re: bookkeeping to prepare for a 64-bit EMACS_INT on 32-bit hosts, Stephen J. Turnbull, 2011/04/30
- Re: bookkeeping to prepare for a 64-bit EMACS_INT on 32-bit hosts, Paul Eggert, 2011/04/29
- Re: bookkeeping to prepare for a 64-bit EMACS_INT on 32-bit hosts, Paul Eggert, 2011/04/30
- Re: bookkeeping to prepare for a 64-bit EMACS_INT on 32-bit hosts,
Eli Zaretskii <=
support 64-bit EMACS_INT on 32-bit hosts, Paul Eggert, 2011/04/29