asn1c中 std::max编译冲突解决方法

1>------ 已启动全部重新生成: 项目: libasnparser, 配置: Debug Win32 ------
1>正在删除项目“libasnparser”(配置“Debug|Win32”)的中间文件和输出文件
1>正在编译...
1>Main.cpp

1>e:/work/libasnparser/libasnparser/position.hh(83) : error C2589: “(”: “::”右边的非法标记
1>e:/work/libasnparser/libasnparser/position.hh(83) : error C2059: 语法错误 : “::”
1>ParserDriver.cpp
1>e:/work/libasnparser/libasnparser/position.hh(83) : error C2589: “(”: “::”右边的非法标记
1>e:/work/libasnparser/libasnparser/position.hh(83) : error C2059: 语法错误 : “::”
1>asn1p_y.tab.cpp
1>e:/work/libasnparser/libasnparser/position.hh(83) : error C2589: “(”: “::”右边的非法标记
1>e:/work/libasnparser/libasnparser/position.hh(83) : error C2059: 语法错误 : “::”
1>e:/work/libasnparser/libasnparser/asn1p_y.tab.cpp(269) : warning C4065: switch 语句包含“default”但是未包含“case”标签
1>e:/work/libasnparser/libasnparser/asn1p_y.tab.cpp(300) : warning C4065: switch 语句包含“default”但是未包含“case”标签
1>正在生成代码...

 

 

u are probably including windows.h somewhere, which defines macros named max and min.

You can #define NOMINMAX before including windows.h to prevent it from defining those macros, or you can prevent macro invocation by using an extra set of parentheses:

column = (std::max)(1u, column + count); 

posted on 2010-08-29 21:11  NBSTAR  阅读(429)  评论(0编辑  收藏  举报

导航