在使用C++的Regex源码时,出现一下编译错误:
error C2332: “class”: 缺少标记名
error C3306: “regex::detail::<unnamed-tag>”: 不允许存在未命名的类 模板
error C2988: 不可识别的模板声明/定义
error C2143: 语法错误: 缺少“;”(在“alignof”的前面)
error C2059: 语法错误:“alignof”
error C2143: 语法错误: 缺少“;”(在“{”的前面)
error C2447: “{”: 缺少函数标题(是否是老式的形式表?)
原因及解决方法:
定位到的类定义重复了,将类重命名即可,例如alignof改为alignof_Rename。
又有错误:
1>regexpr2.obj : error LNK2020: 无法解析的标记(0A00131F) "protected: static enum regex::TOKEN const * const regex::perl_syntax_base::s_rgreg" (?s_rgreg@perl_syntax_base@regex@@1QBW4TOKEN@2@B)
1>regexpr2.obj : error LNK2020: 无法解析的标记(0A001332) "protected: static enum regex::TOKEN const * const regex::perl_syntax_base::s_rgescape" (?s_rgescape@perl_syntax_base@regex@@1QBW4TOKEN@2@B)
1>regexpr2.obj : error LNK2001: 无法解析的外部符号 "protected: static enum regex::TOKEN const * const regex::perl_syntax_base::s_rgreg" (?s_rgreg@perl_syntax_base@regex@@1QBW4TOKEN@2@B)
1>regexpr2.obj : error LNK2001: 无法解析的外部符号 "protected: static enum regex::TOKEN const * const regex::perl_syntax_base::s_rgescape" (?s_rgescape@perl_syntax_base@regex@@1QBW4TOKEN@2@B)
解决方法:
将
REGEX_SELECTANY TOKEN const perl_syntax_base::s_rgreg[ UCHAR_MAX + 1 ] =
修改为:
/*REGEX_SELECTANY*/ TOKEN const perl_syntax_base::s_rgreg[ UCHAR_MAX + 1 ] =