error C2589

莫名其妙的非法标记错误

Posted by 雯饰太一 on May 28, 2023

error C2589

错误提示

1
2
3
4
5
6
7
8
9
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstring(23): error C2589: “(”:“::”右边的非法标记
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\cstring(23): error C2059: 语法错误:“::”
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iosfwd(491): error C2589: “(”:“::”右边的非法标记
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\iosfwd(491): error C2059: 语法错误:“::”
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\typeinfo(51): error C2589: “(”:“::”右边的非法标记
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\typeinfo(51): error C2059: 语法错误:“::”
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\intrin.h(390): error C2059: 语法错误:“(”
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xlocale(682): error C2589: “(”:“::”右边的非法标记
1>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xlocale(682): error C2059: 语法错误:“::”

解决策略

看具体是哪里出的错,我这里的错误是因为strlen的typedef重复写了,在VC的相关头文件里面有,并且在libnopoll的相关头文件中也有,因此出了问题;

针对于个人情况,使用以下代码可以修复:

1
2
3
4
5
#include "nopoll.h"
#ifdef strlen
#undef strlen
#endif // strlen
//在正式用的时候,取消定义一下即可;