Hello -- Were you able to debug the expanded macros with the i-files I sent to you? here is a link to the i-file (in a zip) http://db.tt/VYWpHtIP Frank Esposito On Thu, May 16, 2013 at 1:33 AM, Eli Zaretskii wrote: > > Date: Wed, 15 May 2013 22:31:48 -0400 > > From: Frank P Esposito > > > > You need to fix the code, or update the readme / install (text) files to > > note that this version of emacs DOES NOT COMPILE with versions of visual > > studio that ARE NOT C99 compliant. > > There was no intent to break compilation with Studio 2003. It's just > that the number of people who use that seems to be vanishingly small, > and in particular none of them tried the pretest version and reported > problems. > > > there are references to defines that are part of stdint.h (C99) -- you > > need to define them or not use them > > We have a replacement stdint.h in nt/inc. If something is missing > from there, please tell what that is. > > > it seems that there is new code in "charset.c charset.h" that have very > > complex macros that are imbedded in other complex macros > > that expand to something like (see below) which is impossible to debug > -- > > this is causing the error > > > > coding.c > > coding.c(2604) : error C2065: 'value' : undeclared identifier > > coding.c(2604) : error C2143: syntax error : missing ':' before ')' > > coding.c(2604) : error C2059: syntax error : ')' > > coding.c(2604) : error C2059: syntax error : ')' > > coding.c(2604) : error C2059: syntax error : ')' > > coding.c(2604) : fatal error C1013: compiler limit : too many open > > parentheses > > This is about CODING_CHAR_CHARSET, right? But then I don't understand > the expansion you are showing, which starts with this: > > > charset = (charset_table + (preferred_charset_id)); > > do { ptrdiff_t offset; charset_map_loaded = 0; result = > (((((sizeof > > ((c) + 0)) > (sizeof ((0x80) + 0)) ? (sizeof ((c) + 0)) : (sizeof > ((0x80) + > > 0))) <= sizeof (unsigned) ? ((c) + (unsigned) 0) < ((0x80) + (unsigned) > 0) > > : ((c) + (unsigned long) 0) < ((0x80) + (unsigned long) 0)) && > > I see no "result = ...", or anything that could expand into it, the > definition of CODING_CHAR_CHARSET. What am I missing? > > > I would be willing work to get this cleaned up -- VC 7.1 supports inline > > functions > > Please do, and thanks. Just one request: try to keep the > MSVC-specific stuff separate, preferably somewhere under the nt/ > directory (e.g., nt/inc/ms-w32.h) or in a clearly #ifdef'ed section at > the beginning of a .c or .h file in src/, so that these changes don't > make reading of the code harder. > > Thanks. >