BUG #15167: error C2365: 'errcode' : redefi nition; previous definition
The following bug has been logged on the website:
Bug reference: 15167
Logged by: Hao LI
Email address: mixtrue@gmail.com
PostgreSQL version: 10.3
Operating system: windows 7
Description:
Platform: windows 7 and vs 2008
The source code checkout from : https://github.com/postgres/postgres.git.
and the git log as following:
commit 9cad926eb876a30d58a5b39789098da83a6ef91c
I run the command from src\tools\msvc\build.pl DEBUG, and get error as
following:
d:\work\postgres\src\include\utils/elog.h(131): error C2365: 'errcode' :
redefinition; previous definition was 'typedef'.
Best Regards,
Hao.
The more info:
1>d:\postgres\src\include\utils/elog.h(131) : error C2365: 'errcode' :
redefinition; previous definition was 'typedef'
1> C:\Program Files (x86)\Microsoft Visual Studio
9.0\VC\include\crtdefs.h(560) : see declaration of 'errcode'
On Mon, Apr 23, 2018 at 2:29 PM, PG Bug reporting form <
noreply@postgresql.org> wrote:
The following bug has been logged on the website:
Bug reference: 15167
Logged by: Hao LI
Email address: mixtrue@gmail.com
PostgreSQL version: 10.3
Operating system: windows 7
Description:Platform: windows 7 and vs 2008
The source code checkout from : https://github.com/postgres/postgres.git.
and the git log as following:
commit 9cad926eb876a30d58a5b39789098da83a6ef91cI run the command from src\tools\msvc\build.pl DEBUG, and get error as
following:d:\work\postgres\src\include\utils/elog.h(131): error C2365: 'errcode' :
redefinition; previous definition was 'typedef'.Best Regards,
Hao.
--
A Database Kernel Engineer. @
http://www.leehao.org.
MyBook: Inside into PostgreSQL Query Engine. @amazon China
<https://www.amazon.cn/%E5%9B%BE%E4%B9%A6/dp/B01KG96FVC/ref=sr_1_1?ie=UTF8&qid=1496719538&sr=8-1&keywords=postgresql%E6%9F%A5%E8%AF%A2%E5%BC%95%E6%93%8E%E6%BA%90%E7%A0%81%E6%8A%80%E6%9C%AF%E6%8E%A2%E6%9E%90>
On 23/04/18 02:49, Hao Lee wrote:
The more info:
1>d:\postgres\src\include\utils/elog.h(131) : error C2365: 'errcode' :
redefinition; previous definition was 'typedef'
1> C:\Program Files (x86)\Microsoft Visual Studio
9.0\VC\include\crtdefs.h(560) : see declaration of 'errcode'
In src/include/port/win32.h, we have this:
/*
* We need to prevent <crtdefs.h> from defining a symbol conflicting with
* our errcode() function. Since it's likely to get included by standard
* system headers, pre-emptively include it now.
*/
#if _MSC_VER >= 1400 || defined(HAVE_CRTDEFS_H)
#define errcode __msvc_errcode
#include <crtdefs.h>
#undef errcode
#endif
For some reason, that doesn't seem to be working as intended, on your
system. Do you see the above in src/include/pg_config_os.h ?
What version of Visual Studio or Platform SDK are you using? What is the
value of _MSC_VER on your system?
- Heikki
yes, the code you mentioned, on my env. as following:
/*
* We need to prevent <crtdefs.h> from defining a symbol conflicting with
* our errcode() function. Since it's likely to get included by standard
* system headers, pre-emptively include it now.
*/
#if _MSC_VER >= 1400 || defined(HAVE_CRTDEFS_H)
#define errcode __msvc_errcode
#include <crtdefs.h>
#undef errcode
#endif
----------------------------------------------------------
the ms version info as following:
Microsoft Visual Studio 2008
Version 9.0.30729.1 SP
Microsoft .NET Framework
Version 3.5 SP1
Installed Edition: Professional
Microsoft Visual C++ 2008 91605-270-4948377-60248
Microsoft Visual C++ 2008
-----------------------------------------------------------------------
the value of _MSC_VER is 1500.
On Mon, Apr 23, 2018 at 3:48 PM, Heikki Linnakangas <hlinnaka@iki.fi> wrote:
On 23/04/18 02:49, Hao Lee wrote:
The more info:
1>d:\postgres\src\include\utils/elog.h(131) : error C2365: 'errcode' :
redefinition; previous definition was 'typedef'
1> C:\Program Files (x86)\Microsoft Visual Studio
9.0\VC\include\crtdefs.h(560) : see declaration of 'errcode'In src/include/port/win32.h, we have this:
/*
* We need to prevent <crtdefs.h> from defining a symbol conflicting with
* our errcode() function. Since it's likely to get included by standard
* system headers, pre-emptively include it now.
*/
#if _MSC_VER >= 1400 || defined(HAVE_CRTDEFS_H)
#define errcode __msvc_errcode
#include <crtdefs.h>
#undef errcode
#endifFor some reason, that doesn't seem to be working as intended, on your
system. Do you see the above in src/include/pg_config_os.h ?What version of Visual Studio or Platform SDK are you using? What is the
value of _MSC_VER on your system?- Heikki
--
A Database Kernel Engineer. @
http://www.leehao.org.
MyBook: Inside into PostgreSQL Query Engine. @amazon China
<https://www.amazon.cn/%E5%9B%BE%E4%B9%A6/dp/B01KG96FVC/ref=sr_1_1?ie=UTF8&qid=1496719538&sr=8-1&keywords=postgresql%E6%9F%A5%E8%AF%A2%E5%BC%95%E6%93%8E%E6%BA%90%E7%A0%81%E6%8A%80%E6%9C%AF%E6%8E%A2%E6%9E%90>