UNIT 11.1의 예제 scanf_integer.c를 보면
#define _CRT_SECURE_NO_WARNINGS를 사용하고 있습니다.
본문의 설명과 참고를 보면...(책 161p)
맨 처음 #define _CRT_SECURE_NO_WARNINGS는 Visual Studio에서만 넣어주면 됩니다(리눅스, OS X 사용자라면 넣지 않아도 됩니다). scanf는 나온 지 오래된 함수라 입력 값의 길이를 설정할 수가 없습니다. 따라서 보안에 취약하기 때문에 Visual Studio에서는 사용하지 말라는 경고가 출력되고 컴파일 에러가 발생합니다. 하지만 여기서는 C 언어를 배우는 과정이므로 scanf 함수를 그대로 사용하겠습니다.
#define _CRT_SECURE_NO_WARNINGS를 넣지 않고 scanf 함수를 사용하면 다음과 같이 컴파일 에러가 발생합니다.
scanf_integer.c(8): 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. 1> c:\program files (x86)\windows kits\10\include\10.0.10150.0\ucrt\stdio.h(1270): note: 'scanf' 선언을 참조하십시오.
scanf_s 함수를 대신 사용하거나 _CRT_SECURE_NO_WARNINGS를 사용하라고 나옵니다. scanf_s 함수는 입력 값의 길이를 설정할 수 있지만 C 언어 표준 함수는 아니며 Visual studio(Visual C++) 전용입니다. 함수 사용 방법은 '부록 23. Secure 함수 사용하기'를 참조하세요.
에러 메시지의 내용도 같다는 걸 알 수 있습니다. 설명을 꼼꼼하게 읽어보세요.
UNIT을 건너뛰지 마세요. UNIT 6을 건너뛰면 다음에 포인터 부분에서 디버거를 사용할 때는 또 모르게 됩니다. 책에서 설명하지 않은 게 아니라 건너뛰는 방식의 학습이 문제가 됩니다.