http://gcstudy.tistory.com/60
deprecated declaration (VC++)
오랫만의 포스팅 이군요.
deprecated 선언에 대한 간단한 얘기를 좀 남겨볼까 합니다.
보통 C++ 를 배우고 Visual C++ 을 IDE 로 채택해서 작업을 해나가는 프로그래머들이
언뜻 언뜻 CRT 의 함수 중 보안 취약성으로 인해서 C4995 경고를 만나게 되면서
deprecated 에 대해서 인지하게 되지 않나 싶은데요.
msdn (http://msdn.microsoft.com/en-us/library/044swk7y.aspx) 을 보면 설명이 나오지만
나타내고자 하는 바는 단순합니다.
deprecated 로 선언된 함수나 타입을 사용할 때 사용자에게 조심하라는 말을 전달하고 싶은 것이죠.
그런데, 프로그래밍을 시작한지 얼마 안되는 시점에서는 이 deprecated 선언의 필요성에 대해서 잘 느끼지 못하지 않나 싶습니다.
그래서 간단한 하나의 예정도를 적어 보자면..
모종의 변환 행렬을 연산해서 3D 공간 상의 Object 의 위치를 얻어 내는 함수가 있다고 가정 합시다.
개발이 진행 되고 서비스를 시작한 뒤 점차 추가적인 컨텐츠를 붙여나가던 도중에 이 함수가 특정 상황에서
내부적으로 행렬 연산을 잘 못하게 되는 버그가 발견 되었다고 칩시다.
이 경우에 가장 첫 번째로 생각하게 되는 솔루션은 해당 함수의 버그를 수정한다 이겠지만 ..
이렇게 할 경우 의도치 않은 상황이 발생할 수 있습니다.
다른 누군가가 이 함수를 가져다 사용하면서 함수의 버그를 수정하기 보다는 잘 못된 수치 만큼을 보정 작업을 추가로
삽입하는 식으로 사용하고 있을지도 모르기 때문입니다.
이런 경우에 택할 수 있는 선택지 중의 하나가 deprecated 선언으로 (이것도 나름의 문제는 있긴 하지만..)
버그가 내재된 기존의 함수를 deprecated 선언을 시키고 새로운 함수를 작성하고 이 후로는 그것을 사용하도록 유도하는 것입니다.
예를 들면,
__declspec(deprecated("리비전 넘버 100 이후로는 이 함수를 사용하지말고 foo_ver2 를 사용하세요."))
void foo() { }
이런식으로요.
'프로그래밍(Programming) > c++, 11, 14 , 17, 20' 카테고리의 다른 글
가상함수를 생성자와 소멸자에 넣으면 호출이 안된다?! (0) | 2015.11.13 |
---|---|
멤버 함수는 인스턴스와 상관없이 동일한 주소를 공유한다 (0) | 2015.11.01 |
십육진수 헥사 문자열을, 숫자(정수)로 변환 예제 (0) | 2015.03.11 |
enum 타입 지정 (0) | 2015.02.03 |
roundoff error 라운드 오프 에러 (0) | 2014.12.08 |