티스토리 뷰


드림스파크 (https://www.dreamspark.com) 에서 학생들에게는 비주얼 스튜디오 최신버전을 무료로 제공한다는걸 얼마 전에 알게 되어서 새로운 버전에 대한 기대감에 비주얼 스튜디오 2013 을 다운받아 사용하고 있었습니다.


근데 비주얼 스튜디오 2013에서는 컴파일러가 강화되었는지, 예전 2010버전에서는 Warning 정도로 처리했던 unsafe 함수들에 대해 에러로 처리하여 컴파일이 되지 않습니다.


예를 들면 scanf, strcpy 같은 함수들을 사용하면 아래와 같은 오류창을 띄우며 컴파일에 실패합니다.


"error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details."


scanf 는 안전하지 않으니, scanf_s를 사용하거나 _CRT_SECURE_NO_WARNINGS을 사용하라는 내용인데, 저 혼자 테스트 하는 프로젝트라서 _CRT_SECURE_NO_WARNINGS을 추가했습니다.



추가하는 방법은 [프로젝트] 메뉴에 제일 밑에 있는 메뉴를 보면 [(프로젝트명) 속성] 이라는 메뉴가 있습니다.



속성을 클릭한 다음에 아래와 같이 C/C++ 전처리기 탭에 들어갑니다.

뜨는 항목중, 전처리기 정의에 오른쪽에 보이는 화살표를 클릭하면 나타나는 <편집...> 을 눌러줍니다.



정의 내용안에 

_CRT_SECURE_NO_WARNINGS

를 입력하고 확인 눌러줍니다.



전처리기 정의가 끝난 이후에는 scanf나 strcpy를 자유롭게 쓰셔도 에러처리 안하고 컴파일이 잘 됩니다.


위와 같은 방법도 있고, 소스코드의 제일 위에 

#define _CRT_SECURE_NO_WARNINGS

을 선언해 주어도 됩니다. 제일 윗 줄에 선언하셔야합니다. (적어도 해당 함수를 담고 있는 헤더 윗줄에)


하지만 소스코드 자체에 이런 "임시 에러 우회방법"을 사용하는것이 마음에 안들어 저는 프로젝트에 추가시키는 편입니다. 사실은 버퍼오버플로우 등의 프로그램 취약성때문에 사용하면 안 되는 함수이기 때문이죠. 하지말라는건 하지 않는게 좋은겁니다 :)


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함