c++ - 不推荐使用的警告如何工作以及如何在使用 JsonCpp 时删除它们?

标签 c++ jsoncpp deprecation-warning

我用 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/

相关文章:

c++ - jsoncpp 如何检查标签是否为空 .isNull() 抛出断言

cakephp - 如何强制 CakePHP 3 和 CakePHP 4 显示弃用警告/通知?

c++ - 枚举指针的丢失值

C# 和 C++ : "Attempted to read or write protected memory" Error

c++ - cudaModuleLoadData 失败,错误代码为 201

c++ - 如何读取包含多个根元素的 JSON 文件?

c++ - 为什么这个透视投影矩阵计算没有给出正确的结果?

c++ - 使用 JsonCpp 创建 Json 消息

swift - 数量类型(标识符 :) deprecated in a future version of iOS?

python - Django 中的详细弃用警告