보안 템플릿 오버 로드
보안이 강화 된 최신 버전의 CRT 함수 많이 사용 되지 (예를 들어, strcpy_s 보다 안전한 대체 하는 것 strcpy).CRT 보다 안전한 사이의 전환을 부드럽게 하는 템플릿 오버 로드를 제공 합니다.
예를 들어,이 코드 때문에 경고를 생성 strcpy 는 사용 되지 않습니다.
char szBuf[10];
strcpy(szBuf, "test"); // warning: deprecated
이 경고를 무시 해도 됩니다.기호를 정의 _CRT_SECURE_NO_WARNINGS 는 경고를 비활성화 하거나 사용 하도록 코드를 업데이트 하려면 strcpy_s:
char szBuf[10];
strcpy_s(szBuf, 10, "test"); // security-enhanced _s function
템플릿 오버 로드 추가 선택 항목을 제공합니다.정의 _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1로 보다 안전한 변형을 자동으로 호출 하는 표준 CRT 함수 템플릿 오버 로드를 사용 합니다.경우 _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 입니다 1, 코드를 변경할 필요 없습니다.이면에 숨겨진 호출을 strcpy 에 대 한 호출으로 변경 됩니다 strcpy_s 크기 인수를 자동으로 제공 합니다.
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
...
char szBuf[10];
strcpy(szBuf, "test"); // ==> strcpy_s(szBuf, 10, "test")
_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES개수는 함수 같은 영향을 주지 않습니다 strncpy.Count 함수 템플릿 오버 로드를 사용 하려면 정의 _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT 1.그러나 그 전에 코드 문자 수 (일반적인 실수) 버퍼 크기를 전달 합니다 확인 합니다.또한 함수 호출을 안전한 variant를 호출 하는 경우 필요한 후 코드는 명시적으로 null 종결자를 버퍼 끝에 씁니다.잘라내기 동작 해야 하는 경우를 참조 하십시오. _TRUNCATE.
[!참고]
매크로 _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT 필요로 하는 _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1으로도 정의 됩니다.경우 _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT 1로 정의 됩니다 및 _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 정의 된 0으로 응용 프로그램 템플릿 오버 로드는 수행 하지 않습니다.
정의 _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES 템플릿 오버 로드 보안 변형 (이름 끝에 "_s") 1에 있습니다.이 경우 경우 _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES 하나의 작은 변경 원래 코드에 적용 해야 하 고 1입니다.
#define _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES 1
...
char szBuf[10];
strcpy_s(szBuf, "test"); // ==> strcpy_s(szBuf, 10, "test")
함수 이름 ("_s" 추가 하 여); 변경 해야 할 템플릿 오버 로드 size 인수를 제공 하 주의 합니다.
기본적으로 _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 및 _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT 0 (사용 안함)으로 정의 된 및 _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES 1 (사용)로 정의 됩니다.
이러한 템플릿 정적 배열에 대 한 유일한 작업 오버 로드 하는 note입니다.동적으로 할당 된 버퍼 추가 소스 코드를 변경 해야 합니다.위 예제를 다시 방문 하십시오.
#define _CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES 1
...
char *szBuf = (char*)malloc(10);
strcpy(szBuf, "test"); // still deprecated; have to change to
// strcpy_s(szBuf, 10, "test");
와이.
#define _CRT_SECURE_CPP_OVERLOAD_SECURE_NAMES 1
...
char *szBuf = (char*)malloc(10);
strcpy_s(szBuf, "test"); // doesn't compile; have to change to
// strcpy_s(szBuf, 10, "test");