D
Dave the Funkatron
Hey all,
I'm using MinGW as part of my toolchain in Eclipse, and I am trying to
figure out why I am getting a compiler error when I include the
<limits> header.
The command that eclipse is running is
g++ -IC:\Dave\School\common\cxx -IC:\Dave\School\common\third party
\packages\glut-3.7.6-bin\include -IC:\Dave\School\common\third party
\packages\pthreads-2005-03-08\Pre-built\include -O0 -g3 -Wall -c -
fmessage-length=0 -ogllib\test_gllib.o ..\gllib\test_gllib.cpp
The error I get is:
In file included from C:/Dave/School/common/cxx/math/math_utils.h:13,
from C:/Dave/School/common/cxx/gfx2d/color.h:9,
from C:/Dave/School/common/cxx/gllib/gl_light.h:
6, from ..\gllib\test_gllib.cpp:8:C:/mingw/bin/../lib/
gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/limits:290: error:
expected `;' before "throw"
C:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/
limits:292: error: expected `;' before "static"
C:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/
limits:292:22: macro "max" requires 2 arguments, but only 1 given
If I go and look at that code in MinGW's "limits" file, I see the
following struct, in which the the static min() function is the first
offending line of code:
template<typename _Tp>
struct numeric_limits : public __numeric_limits_base
{
/** The minimum finite value, or for floating types with
denormalization, the minimum positive normalized value. */
static _Tp min() throw() { return static_cast<_Tp>(0); }
/** The maximum finite value. */
static _Tp max() throw() { return static_cast<_Tp>(0); }
/** The @e machine @e epsilon: the difference between 1 and the
least
value greater than 1 that is representable. */
static _Tp epsilon() throw() { return static_cast<_Tp>(0); }
/** The maximum rounding error measurement (see LIA-1). */
static _Tp round_error() throw() { return static_cast<_Tp>(0); }
/** The representation of positive infinity, if @c
has_infinity. */
static _Tp infinity() throw() { return static_cast<_Tp>(0); }
/** The representation of a quiet "Not a Number," if @c
has_quiet_NaN. */
static _Tp quiet_NaN() throw() { return static_cast<_Tp>(0); }
/** The representation of a signaling "Not a Number," if
@c has_signaling_NaN. */
static _Tp signaling_NaN() throw() { return
static_cast<_Tp>(0); }
/** The minimum positive denormalized value. For types where
@c has_denorm is false, this is the minimum positive
normalized
value. */
static _Tp denorm_min() throw() { return static_cast<_Tp>(0); }
};
I've never actually seen that throw() syntax before, as I've always
just had throw statements in the body of my code. At any rate, I
thought that GCC might be trying to compile without exceptions, so I
tried including the -fexceptions option to GCC, but that made no
difference. So, any ideas what might get it going?
Thanks.
Dave
I'm using MinGW as part of my toolchain in Eclipse, and I am trying to
figure out why I am getting a compiler error when I include the
<limits> header.
The command that eclipse is running is
g++ -IC:\Dave\School\common\cxx -IC:\Dave\School\common\third party
\packages\glut-3.7.6-bin\include -IC:\Dave\School\common\third party
\packages\pthreads-2005-03-08\Pre-built\include -O0 -g3 -Wall -c -
fmessage-length=0 -ogllib\test_gllib.o ..\gllib\test_gllib.cpp
The error I get is:
In file included from C:/Dave/School/common/cxx/math/math_utils.h:13,
from C:/Dave/School/common/cxx/gfx2d/color.h:9,
from C:/Dave/School/common/cxx/gllib/gl_light.h:
6, from ..\gllib\test_gllib.cpp:8:C:/mingw/bin/../lib/
gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/limits:290: error:
expected `;' before "throw"
C:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/
limits:292: error: expected `;' before "static"
C:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/c++/3.4.5/
limits:292:22: macro "max" requires 2 arguments, but only 1 given
If I go and look at that code in MinGW's "limits" file, I see the
following struct, in which the the static min() function is the first
offending line of code:
template<typename _Tp>
struct numeric_limits : public __numeric_limits_base
{
/** The minimum finite value, or for floating types with
denormalization, the minimum positive normalized value. */
static _Tp min() throw() { return static_cast<_Tp>(0); }
/** The maximum finite value. */
static _Tp max() throw() { return static_cast<_Tp>(0); }
/** The @e machine @e epsilon: the difference between 1 and the
least
value greater than 1 that is representable. */
static _Tp epsilon() throw() { return static_cast<_Tp>(0); }
/** The maximum rounding error measurement (see LIA-1). */
static _Tp round_error() throw() { return static_cast<_Tp>(0); }
/** The representation of positive infinity, if @c
has_infinity. */
static _Tp infinity() throw() { return static_cast<_Tp>(0); }
/** The representation of a quiet "Not a Number," if @c
has_quiet_NaN. */
static _Tp quiet_NaN() throw() { return static_cast<_Tp>(0); }
/** The representation of a signaling "Not a Number," if
@c has_signaling_NaN. */
static _Tp signaling_NaN() throw() { return
static_cast<_Tp>(0); }
/** The minimum positive denormalized value. For types where
@c has_denorm is false, this is the minimum positive
normalized
value. */
static _Tp denorm_min() throw() { return static_cast<_Tp>(0); }
};
I've never actually seen that throw() syntax before, as I've always
just had throw statements in the body of my code. At any rate, I
thought that GCC might be trying to compile without exceptions, so I
tried including the -fexceptions option to GCC, but that made no
difference. So, any ideas what might get it going?
Thanks.
Dave