Re: 매크로 정의에 대한 질문입니다.
, 도장_ 관리자님이 작성75.3은 여러 개의 코드를 묶기 위해 \를 사용했습니다.
77.2에서 _CALC_DATA는 구조체 선언이고, 매크로가 아닙니다.
매크로에 해당하는 부분은 모두 한 줄입니다. 중복 선언을 막기 위해 매크로 가드를 사용했을 뿐입니다.
매크로 정의 자체는
#define CALC_DATA_H
한 줄로 끝났습니다.
CALC_DATA_H 매크로가 정의되어 있지 않았으면 처음 사용하는 것이니 해당 구조체 선언을 포함하기 위해 사용한 관례적인 매크로 사용법입니다. 이러한 관례를 매크로 가드라고 합니다.
매크로로 여러 줄의 코드를 정의한다면 \를 사용해야 합니다.
CALC_DATA_H 매크로는 아무것도 없으므로 C 언어 코드 어디서나 매크로를 마구 써도 코드에 어떤 영향도 주지 못합니다.
#define CALC_DATA_H
int main(void)
{
CALC_DATA_H
printf("Hello, world\n");
CALC_DATA_H
return 0;
}
빈 매크로를 사용해 중복 여부를 판단하는 겁니다. 예를 들어 C 언어 소스 코드마다 stdio.h 헤더 파일을 포함하고 있어서 모든 소스 코드 파일을 컴파일할 때마다 stdio.h 헤더 파일을 해석해야 한다면 시간이 오래 걸릴 겁니다. 위와 같은 매크로 가드로 헤더 파일을 한 번만 포함하기 위해 사용합니다.