Search

'error C4996'에 해당되는 글 1건

  1. 2016.08.12 error C4996: 'xxx': deprecated로 선언되었습니다.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

error C4996: 'xxx': deprecated로 선언되었습니다.



deprecated란

기존의 함수나 클래스가 필요없어져서 삭제하려고 할 때 이미 많은 곳에서 사용 중이라서 바로 삭제하기 까다로운 경우가 있다. 이런 경우 바로 삭제하지 않고 삭제할 함수나 클래스를 사용하지 않도록 유도한 후 사용하는 곳이 없어지는 시점이 왔을 때 삭제하는 방식을 사용할 수 있다. 이 때 사용할 수 있는 기능이 deprecated 기능이다.


    //함수
    __declspec(deprecated) void DeplacatedFunction()
    {
    }

    //구조체
    struct __declspec(deprecated) DeplacatedStruct
    {
    };

    //클래스
    class __declspec(deprecated) DeplacatedClass
    {
    };

     



    이렇게 설정하면 컴파일시 deprecated로 설정된 것이 사용된 곳에서 각각 다음과 같은 메시지가 출력된다.

    warning C4996: ‘DeplacatedFunction’: deprecated로 선언되었습니다.
    ‘DeplacatedFunction’ 선언을 참조하십시오.

    warning C4996: ‘DeplacatedStruct’: deprecated로 선언되었습니다.
    ‘DeplacatedStruct’ 선언을 참조하십시오.

    warning C4996: ‘DeplacatedClass’: deprecated로 선언되었습니다.
    ‘DeplacatedClass’ 선언을 참조하십시오.



    그러나 의도적으로 Deplacated 로 설정된것을 사용하고자 한다면



    #define _CRT_SECURE_NO_DEPRECATE


    #pragma warning(disable:4996)


    둘 중의 하나를 선언하면 된다.





    deprecated (C++)

    Visual Studio 2005

    (Microsoft specific) With the exceptions noted below, the deprecated declaration offers the same functionality as the deprecatedpragma:

    • The deprecated declaration lets you specify particular forms of function overloads as deprecated, whereas the pragma form applies to all overloaded forms of a function name.

    • The deprecated declaration lets you specify a message that will display at compile time. The text of the message can be from a macro.

    • Macros can only be marked as deprecated with the deprecated pragma.

    If the compiler encounters the use of a deprecated identifier, a C4996 warning is thrown.

    Example

    The following sample shows how to mark functions as deprecated, and how to specify a message that will be displayed at compile time, when the deprecated function is used.

    // deprecated.cpp
    // compile with: /W1
    #define MY_TEXT "function is deprecated"
    void func1(void) {}
    __declspec(deprecated) void func1(int) {}
    __declspec(deprecated("** this is a deprecated function **")) void func2(int) {}
    __declspec(deprecated(MY_TEXT)) void func3(int) {}
    
    int main() {
       func1();
       func1(1);   // C4996
       func2(1);   // C4996
       func3(1);   // C4996
    }
    

    The following sample shows how to mark classes as deprecated, and how to specify a message that will be displayed at compile time, when the deprecated class is used.

    // deprecate_class.cpp
    // compile with: /W1
    struct __declspec(deprecated) X {
       void f(){}
    };
    
    struct __declspec(deprecated("** X2 is deprecated **")) X2 {
       void f(){}
    };
    
    int main() {
       X x;   // C4996
       X2 x2;   // C4996
    }