#define 에 대한 질문이요

조회수 542회

보안 오류 때문에

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstring>

이런 식으로 코드 첫 부분에 쓰잖아요. 그런데

#include <iostream>
#include <cstring>
#define _CRT_SECURE_NO_WARNINGS

이렇게 하면 안되더라구요 어짜피 전처리에서 실행되는거라서 저거 끼리에 순서는 상관 없는거 아닌가요? 사실 잘 모르겠습니다.

1 답변

  • 좋아요

    2

    싫어요
    채택 취소하기

    전처리는 위에서 아래로 처리됩니다.

    동시라는 한번에 뙇 하고 되는게 아니라 한줄 씩 한줄씩 순차적으로 진행됩니다.

    따라서 #define _CRT_SECURE_NO_WARNINGS이 가장 위에 있으면 iostreamcstring이 추가 될 때 이미 _CRT_SECURE_NO_WARNINGS가 정의 된 상태가 됩니다. #define _CRT_SECURE_NO_WARNINGS가 마지막에 있으면 iostreamcstring 추가될 때 _CRT_SECURE_NO_WARNINGS는 정의되지 않은 상태가됩니다.

    두 동작은 의미상 큰 차이가 발생할 수 있습니다.

    그렇기에 저런 전처리 매크로는 일반적으로 프로젝트 속성에서 정의합니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)