我用 VS 2015 jsoncpp 编译并且能够链接它并且一切正常。
但是,我收到了已弃用的警告音。一些类在代码中被标记为 depecrated:
class JSONCPP_DEPRECATED("Use StreamWriter instead") JSON_API Writer {...};
与
#define JSONCPP_DEPRECATED(message) __declspec(deprecated(message))
问题是我不使用这些类(class)。一旦包含文件,我就会收到消息。编译这个:
#include <json/json.h>
int main( int argc, char* argv[] )
{
return 0;
}
产生 13 个弃用警告...
难道这些警告不应该只在使用已弃用的类/函数时报告吗?有没有办法让它以这种方式工作? (我可以禁用警告 C4996,但最好保持启用状态,但仅在实际使用已弃用的类/函数时才报告)。
最佳答案
我认为问题在于,某些类派生自 Writer。这算作被使用。不过,我不知道如何消除这些警告。
编辑: 测试了它。它会产生 5 次相同的警告,但没有被使用。
测试.h
class __declspec(deprecated("Depricated Warning UnusedClass")) UnusedClass
{
public:
void SetI(int &val);
};
class __declspec(deprecated("Depricated Warning UnusedClass")) UnusedClass2 : UnusedClass
{
public:
int GetI();
int i;
};
测试.cpp
void UnusedClass::SetI(int &val)
{
val = 0;
}
int UnusedClass2::GetI()
{
return 10;
}
警告:
Warning 7 warning C4996: 'UnusedClass': Depricated Warning UnusedClass C:\Users\admin\Documents\Test.h 144
关于c++ - 不推荐使用的警告如何工作以及如何在使用 JsonCpp 时删除它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46151531/