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