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.
(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
}
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 }
'Programming > C,CPP,CS' 카테고리의 다른 글
fatal error LNK1169: 여러 번 정의된 기호가 있습니다. (0) | 2016.08.18 |
---|---|
CRuntieClass Reflection (0) | 2016.08.17 |
비쥬얼 스튜디오 디버깅 팁 ( Visual Studio Debugging Tips ) (0) | 2016.08.09 |
C++ Standard library has many containers (0) | 2016.07.19 |
Log4cxx Build in VS2013 (0) | 2016.06.29 |