Hello, in the WIN_NT section, there's this explanation:

/* The following macro creates a quad-sized constant, possibly one
   which is too large to fit in a long int.  The Microsoft compiler does
   not permit the LL suffix which some other platforms require, but it
   handles numbers up to the largest 64-bit integer correctly without such
   a suffix, so the macro definition is trivial. */
#ifdef __GNUC__ // needed for gcc 3.3.1
#define QUADCONST(n) (n##LL)
#else
#define QUADCONST(n) (n)
#endif

However, this is the page for MSVC2005
http://msdn.microsoft.com/en-us/library/00a1awxf%28v=vs.80%29.aspx
and all posterior versions have the same explanation:
"To specify a 64-bit integral type, use the LL, ll or i64 suffix."

Indeed, in parse.y we have the constant 1LL and MSVC doesn't complain.
Should I correct common.h? I would reduce the code I copied above to only
three lines:

/* The following macro creates a quad-sized constant, possibly one
   which is too large to fit in a long int. */
#define QUADCONST(n) (n##LL)

However, do we support MSVC 2003 and earlier? In this case, we would need
#if defined(__GNUC__) || (defined _MSC_VER && (_MSC_VER >= 1400))
#define QUADCONST(n) (n##LL)
#else
#define QUADCONST(n) (n)
#endif


C.
---
Claudio Valderrama C.
Consultant, SW developer.


------------------------------------------------------------------------------
Put Bad Developers to Shame
Dominate Development with Jenkins Continuous Integration
Continuously Automate Build, Test & Deployment 
Start a new project now. Try Jenkins in the cloud.
http://p.sf.net/sfu/13600_Cloudbees
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to