[
https://issues.apache.org/jira/browse/THRIFT-4680?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sebastian Stüker updated THRIFT-4680:
-------------------------------------
Description:
When compiling under Windows 10 and including TBufferTransports.h, compilation
fails with
Error C2589 '(': illegal token on right side of '::' (compiling source
file [...])
[...]\thrift-0.11.0\lib\cpp\src\thrift\transport\tbuffertransports.h 452
The error seems to be caused by the fact that in windows.h a macro max is
defined.
Possible work arounds are to defino NOMINMAX in order to prevent windows.h to
defin the macro max.
Alternatively before the statement on line 452, to undefine the macro
{{#undef max }}
{{maxBufferSize_ = std::numeric_limits<uint32_t>::max();}}{{ }}
However, I would prefer a version, where it is checked whether max is defined
as a macro, and if so, to use the other, correct syntax for this case of:
{{maxBufferSize_ = (std::numeric_limits<uint32_t>::max)();}}
> TBufferTransports.h does not compile under Windows 10
> -----------------------------------------------------
>
> Key: THRIFT-4680
> URL: https://issues.apache.org/jira/browse/THRIFT-4680
> Project: Thrift
> Issue Type: Bug
> Components: C++ - Library
> Affects Versions: 0.11.0
> Reporter: Sebastian Stüker
> Assignee: James E. King III
> Priority: Critical
>
> When compiling under Windows 10 and including TBufferTransports.h,
> compilation fails with
> Error C2589 '(': illegal token on right side of '::' (compiling source
> file [...])
> [...]\thrift-0.11.0\lib\cpp\src\thrift\transport\tbuffertransports.h 452
> The error seems to be caused by the fact that in windows.h a macro max is
> defined.
> Possible work arounds are to defino NOMINMAX in order to prevent windows.h to
> defin the macro max.
> Alternatively before the statement on line 452, to undefine the macro
> {{#undef max }}
> {{maxBufferSize_ = std::numeric_limits<uint32_t>::max();}}{{ }}
> However, I would prefer a version, where it is checked whether max is defined
> as a macro, and if so, to use the other, correct syntax for this case of:
> {{maxBufferSize_ = (std::numeric_limits<uint32_t>::max)();}}
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)