Message 56176 - Python tracker (original) (raw)
Hi,
We see following compiler error when 'Python2.5.1' is compiled under VC.NET 2002 ( 7.0.9466 ). This happens in 'pythoncore' project:
------ Build started: Project: pythoncore, Configuration: Release Win32 ------Compiling... zutil.c .... .... sha512module.c \python-build\Python-2.5.1\Modules\sha512module.c(146) : error C2059: syntax error : 'bad suffix on number' \python-build\Python-2.5.1\Modules\sha512module.c(146) : error C2146: syntax error : missing ')' before identifier 'L' \python-build\Python-2.5.1\Modules\sha512module.c(146) : error C2144: syntax error : '' should be preceded by '' \python-build\Python-2.5.1\Modules\sha512module.c(146) : error C2144: syntax error : '' should be preceded by '' \python-build\Python-2.5.1\Modules\sha512module.c(146) : error C2143: syntax error : missing ')' before 'identifier' \python-build\Python-2.5.1\Modules\sha512module.c(146) : error C2059: syntax error : 'bad suffix on number'
The fix for the above problem is given below where _MSC_VER is increased more than 1300 that has LL and ULL literal suffix. VC.NET2002 is a C89 compiler and it doesn't have LL and ULL support.
/* VC 7.1 has them and VC 6.0 does not. VC 6.0 has a version number of 1200. Microsoft eMbedded Visual C++ 4.0 has a version number of 1201 and doesn't define these. If some compiler does not provide them, modify the #if appropriately. / #if defined(_MSC_VER) #if _MSC_VER > 1300 #define HAVE_UINTPTR_T 1 #define HAVE_INTPTR_T 1 #else / VC6 & eVC4 don't support the C99 LL suffix for 64-bit integer literals / #define Py_LL(x) x##I64 #define Py_ULL(x) Py_LL(x##U) #endif / _MSC_VER > 1300 / #endif / _MSC_VER */
#endif
Please let me know your comments and if the fix looks rights, please incorporate in your future release.
-Karthik Rajagopalan D.E.Shaw India Software Pvt Ltd