代码之家  ›  专栏  ›  技术社区  ›  jpo38

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

  •  4
  • jpo38  · 技术社区  · 7 年前

    class JSONCPP_DEPRECATED("Use StreamWriter instead") JSON_API Writer {...};
    

    具有

    #define JSONCPP_DEPRECATED(message) __declspec(deprecated(message))
    

    问题是我不使用这些类。文件一包括进来我就收到消息。编译此文件:

    #include <json/json.h>
    
    int main( int argc, char* argv[] )
    {
    
        return 0;
    }
    

    产生13个不推荐的警告。。。

    2 回复  |  直到 7 年前
        1
  •  3
  •   FloIsAwsm    7 年前

    我认为问题是,有些类源于Writer。这被视为正在使用。不过,我不知道如何摆脱这些警告。

    编辑:

    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;
    };
    

    测验清洁石油产品

    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
    
        2
  •  1
  •   Motti    7 年前

    @FlosAwsm said ,问题是 Writer

    我已经提交了一份 pull request 这解决了这个问题,同时您可以执行我对jsoncpp的本地副本所做的更改。

    +++ include/json/writer.h
    +#pragma warning(push)
    +#pragma warning(disable:4996) // Deriving from deprecated class
    class JSONCPP_DEPRECATED("Use StreamWriterBuilder instead") JSON_API FastWriter : public Writer {
    +#pragma warning(pop)
    
    +#pragma warning(push)
    +#pragma warning(disable:4996) // Deriving from deprecated class  
    class JSONCPP_DEPRECATED("Use StreamWriterBuilder instead") JSON_API StyledWriter : public Writer {  
    +#pragma warning(pop)  
    

    请注意,警告是由以下原因引起的: FastWriter StyledWriter 作家

    作家