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: Paul Eggert
Subject: Re: bookkeeping to prepare for a 64-bit EMACS_INT on 32-bit hosts
Date: Fri, 29 Apr 2011 23:54:50 -0700
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.14) Gecko/20110223 Thunderbird/3.1.8

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

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.

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.

#ifndef EMACS_INT
# if BITS_PER_LONG < BITS_PER_LONG_LONG
#  define EMACS_INT long long
#  define BITS_PER_EMACS_INT BITS_PER_LONG_LONG
#  define pI "ll"
# elif BITS_PER_INT < BITS_PER_LONG
#  define EMACS_INT long
#  define BITS_PER_EMACS_INT BITS_PER_LONG
#  define pI "l"
# else
#  define EMACS_INT int
#  define BITS_PER_EMACS_INT BITS_PER_INT
#  define pI ""
# endif
#endif
#ifndef EMACS_UINT
# define EMACS_UINT unsigned EMACS_INT
#endif



reply via email to

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