vc使用jsoncpp头文件冲突问题
编译时出现
1>d:\program files (x86)\microsoft visual studio 9.0\vc\include\xdebug(32) : warning C4229: 使用了记时错误 : 忽略数据上的修饰符 1>d:\program files (x86)\microsoft visual studio 9.0\vc\include\xdebug(32) : error C2365: “operator new”: 重定义;以前的定义是“函数” 1>d:\program files (x86)\microsoft visual studio 9.0\vc\include\xdebug(32) : error C2078: 初始值设定项太多 1>d:\program files (x86)\microsoft visual studio 9.0\vc\include\xdebug(32) : error C2440: “初始化”: 无法从“int”转换为“void *” 1>d:\program files (x86)\microsoft visual studio 9.0\vc\include\xlocale(343) : error C2227: “->_Name”的左边必须指向类/结构/联合/泛型类型 1>d:\program files (x86)\microsoft visual studio 9.0\vc\include\xlocale(343) : error C2228: “.c_str”的左边必须有类/结构/联合 1>d:\program files (x86)\microsoft visual studio 9.0\vc\include\xlocale(344) : error C2065: “_Cat”: 未声明的标识符 1>d:\program files (x86)\microsoft visual studio 9.0\vc\include\xlocale(344) : error C2065: “_Other”: 未声明的标识符 1>d:\program files (x86)\microsoft visual studio 9.0\vc\include\xlocale(344) : error C2228: “._Ptr”的左边必须有类/结构/联合 1>d:\program files (x86)\microsoft visual studio 9.0\vc\include\xlocale(344) : fatal error C1003: 错误计数超过 100;正在停止编译
jsoncpp的代码拿着好久了,一直不能加入到自己库,总出现这些错误,一直没搞明白怎么回事
今天无意中发现是debug版本中是new在作怪
#ifdef _DEBUG #define new DEBUG_NEW #endif
搞的好纠结的,印象中试过几次 都没找着问题,哎..
解决方式如下:修改json.h
#ifndef JSON_JSON_H_INCLUDED # define JSON_JSON_H_INCLUDED #ifdef new #define REDEFINE_NEW #undef new #endif // new //# include "autolink.h" # include "value.h" # include "reader.h" # include "writer.h" # include "features.h" #ifdef REDEFINE_NEW #define new DEBUG_NEW #endif // REDEFINE_NEW #endif // JSON_JSON_H_INCLUDED
先取消new的DEBUG_NEW宏定义,尾巴上再重新定义宏,完美解决呀..
得养成好习惯,头文件中不能写的代码不能写... 我是有个模板类的头文件中使用了DEBUG_NEW宏,没法