[wave] Using wave to preprocess boost headers

I have tried to get wave to preprocess the boost headers. However I get an error in cstdint.hpp line 246 # if ULONG_MAX == 18446744073709551615 // 2**64 - 1 error: ill formed integer literal or integer constant too large: 18446744073709551615 Have anybody else encountered this problem, and found a way around it? Best regards, Thomas Andersen

Thomas Andersen wrote:
I have tried to get wave to preprocess the boost headers. However I get an error in cstdint.hpp line 246
# if ULONG_MAX == 18446744073709551615 // 2**64 - 1
error: ill formed integer literal or integer constant too large: 18446744073709551615
Have anybody else encountered this problem, and found a way around it?
Which platform? With which compiler Wave was compiled with? Which Boost version? I've recently (after Boost V1.33.0 release) fixed a similar problem, could you try to use the current CVS::HEAD or CVS::RELEASE_1_33_0 sources please and try again? Regards Hartmut

Sorry for the late reply, but I was a bit bussy at work. I tried the latest version of wave in CVS:HEAD and that seemed to work just fine. Thanks a lot! Best regards, Thomas Andersen "Hartmut Kaiser" <hartmut.kaiser@gmail.com> wrote in message news:001501c5cf8a$c159c710$0400a8c0@slartibartfast...
Thomas Andersen wrote:
I have tried to get wave to preprocess the boost headers. However I get an error in cstdint.hpp line 246
# if ULONG_MAX == 18446744073709551615 // 2**64 - 1
error: ill formed integer literal or integer constant too large: 18446744073709551615
Have anybody else encountered this problem, and found a way around it?
Which platform? With which compiler Wave was compiled with? Which Boost version?
I've recently (after Boost V1.33.0 release) fixed a similar problem, could you try to use the current CVS::HEAD or CVS::RELEASE_1_33_0 sources please and try again?
Regards Hartmut
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Thomas Andersen wrote:
I have tried to get wave to preprocess the boost headers. However I get an error in cstdint.hpp line 246
# if ULONG_MAX == 18446744073709551615 // 2**64 - 1
error: ill formed integer literal or integer constant too large: 18446744073709551615
Have anybody else encountered this problem, and found a way around it?
On 32 bit system, an unsigned long can't be == 18446744073709551615. Even on a 64 bit system, the literal 18446744073709551615 would be signed. The code probably should read # if ULONG_MAX == 18446744073709551615ULL on systems that allow for 'long long'. Regards, m Send instant messages to your online friends http://au.messenger.yahoo.com

Martin Wille wrote:
Thomas Andersen wrote:
I have tried to get wave to preprocess the boost headers. However I get an error in cstdint.hpp line 246
# if ULONG_MAX == 18446744073709551615 // 2**64 - 1
error: ill formed integer literal or integer constant too large: 18446744073709551615
Have anybody else encountered this problem, and found a way around it?
On 32 bit system, an unsigned long can't be == 18446744073709551615. Even on a 64 bit system, the literal 18446744073709551615 would be signed. The code probably should read
# if ULONG_MAX == 18446744073709551615ULL
on systems that allow for 'long long'.
You mean UL (For all of them, this is checking for the biggest possible unsigned long, remember?). However the standard says integer literals will choose the smallest type that can hold them, signed first, so that will be chosen implicitly anyway for the actual value. Unrepresentable literals should be a warning, not an error, anyway (and, obviously (now), only if the code is actually compiled). PS: what happens for systems with funky dword sizes, like 28? (I think there still are _some_ around) PPS: Why isn't that written as 0xffffffffffffffff?
participants (4)
-
Hartmut Kaiser
-
Martin Wille
-
Simon Buchan
-
Thomas Andersen