Please see below my colleague response.

 

From: Tom Wiggins
Sent: 28 March 2011 10:25
To: Chris Stylianou
Subject: Boost debugging

 

Hi Chris,

 

I tried running the same build command with the “g++ -E” option. The error line gets turned into:

 

    ESU = 2, EAST_SOUTH_UP = 2, 2 = 2, EAST_SOUTH = 2, FLIP_Y = 2,

 

Obviously ES is being defined to 2 from somewhere else.

 

The error does not get fixed if we #undef ES before the #include of “polygon.hpp” in the “main.cc” file, but it does if we insert an #undef directly before the declaration of the enum in “polygon.hpp” itself. (with no other errors reported)

 

On further inspection (and checking the GCC debug output options) it looks like that it is being defined in “/usr/include/sys/regset.h”

 

77 /*

78  * The names and offsets defined here are specified by i386 ABI suppl.

79  */

80

81 #define          SS                           18           /* only stored on a privilege transition */

82 #define          UESP                      17           /* only stored on a privilege transition */

83 #define          EFL                         16

84 #define          CS                           15

85 #define          EIP                          14

86 #define          ERR                        13

87 #define          TRAPNO                               12

88 #define          EAX                        11

89 #define          ECX                        10

90 #define          EDX                        9

91 #define          EBX                        8

92 #define          ESP                         7

93 #define          EBP                        6

94 #define          ESI                          5

95 #define          EDI                         4

96 #define          DS                           3

97 #define          ES                           2

98 #define          FS                           1

99 #define          GS                           0

 

Kind regards,

Tom