200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > c语言中错误c2061 error C2061: 语法错误: 标识符“_Wherenode”

c语言中错误c2061 error C2061: 语法错误: 标识符“_Wherenode”

时间:2023-09-19 07:29:26

相关推荐

c语言中错误c2061 error C2061: 语法错误: 标识符“_Wherenode”

昨天同事说,类里加了个静态的vector类型的公共成员后,在其他类里调用,操作该成员,编译出错。

1>d:\program files\microsoft visual studio 9.0\vc\include\xtree(1411) : error C2061: 语法错误: 标识符“_Wherenode”

1> d:\program files\microsoft visual studio 9.0\vc\include\xtree(1408): 编译类模板成员函数“std::_Tree_nod<_traits>::_Node *std::_Tree<_traits>::_Buynode(std::_Tree_nod<_traits>::_Node *,std::_Tree_nod<_traits>::_Node *,std::_Tree_nod<_traits>::_Node *,const IgnoreCaseWString &,char)”时

1> with

1> [

1>_Traits=std::_Tset_traits,std::allocator,false>

我的第一感觉就是:不可能吧!转过去看了看。

开始以为是vector使用的自定义类型的问题。换成更简单的set试一下,依然如此。去掉静态声明后再试,还是这样。经过尝试发现,在定义该成员的类里的成员函数操作该成员就没问题,在其他类里直接操作该成员就报xtree(1411) : error C2061: 语法错误: 标识符“_Wherenode”

看了xtree的对应代码,_Wherenode分明是在前2行声明且赋值的一个指针。当时想来想去也想不出啥原因。

今天CSDN再搜了一下,找到一个说法,是MFC的DEBUG_NEW导致的。

我验证了一下,果然如此。

原来 afx.h中定义了#define DEBUG_NEW new(THIS_FILE, __LINE__) 和#define THIS_FILE__FILE__

被包含的位置在DEBUG_NEW 之后,自然就不认识THIS_FILE了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。