Visual studio를 이용하여 실습을 할 때 교재나 강의의 예제에 있는 strcpy 함수를 사용할 경우 에러가 발생하는 경우가 있습니다.
해결 방법은 몇 가지가 있습니다.
[방법1]
솔루션 탐색기에서 해당 프로젝트를 우클릭하여 '속성(R)' 메뉴에서 'C/C++'의 '일반'을 선택하면 우측 화면에 'SDL 검사' 항목이 있습니다. 이를 '아니오'로 선택합니다.
[방법2]
프로그램의 첫 줄에 다음 문장을 넣습니다.
#define _CRT_SECURE_NO_WARNINGS
[방법3]
strcpy 함수 대신 strcpy_s 함수를 사용합니다. 사용 형식은 다음과 같습니다.
strcpy_s(dest, size, src);
여기에서 dest는 목적지, size는 dest의 크기, src는 소스
(예)
char str1[100], str2[100];
cin >> str1;
strcpy_s(str2, 100, str1);
이 문제는 SDL과 관련된 문제입니다. SDL(Security Development Lifecycle)은 마이크로소프트에서 제안한 소프트웨어 개발 프로세스를 의미하는데, 그 중 소프트웨어의 보안을 위해 C/C++ 표준 라이브러리에 포함된 함수 중 보안상 위험성을 내포하는 함수 대신 별도로 제공한 함수를 사용하도록 하고 있습니다.
strcpy 함수도 그러한 함수에 포함되며, 이 함수 대신 strcpy_s 함수를 사용하도록 하고 있습니다. 그런데 이 함수는 C/C++ 표준에는 포함되어 있지 않아 GCC와 같은 컴파일러에서는 사용할 수 없습니다. 이 과목에서는 C++ 표준에 있는 내용을 중심으로 다루고 있어 SDL을 적용하지 않습니다.
위의 [방법1, 2]는 SDL 검사를 하지 않도록 하여 C/C++ 표준의 함수를 사용할 수 있게 하는 것이고, [방법3]은 마이크로소프트에서 제안한 방법을 따르는 것입니다.
이병래 교수