반응형
헤더 파일간의 관계가 얽히면 중복 정의가 될 수 있다.
이 문제는 매크로 파트에서 배운 조건부 컴파일을 이용해서 해결가능하다.
#ifndef를 이용하면 최초 한 번 씩만 정의하는게 가능하다.
예) 구조체의 중복 정의 없애기
header.h
#ifndef __HEADER_H__ // 정의 되어 있지 않다면 (이미 정의되었으면 #endif 까지 코드 전부 무시)
#define __HEADER_H__ // 정의한다
typedef struct cir
{
int r;
int pi;
}CIR;
#endif
header2.h
#ifndef __HEADER2_H__
#define __HEADER2_H__
#include "header.h"
CIR CirArea(int num1, int num2)
{
CIR cir1;
cir1.r = num1;
cir1.pi = num2;
return cir1;
}
#endif
main.c
#include <stdio.h>
#include "header.h"
#include "header2.h"
int main()
{
CIR cir1 = CirArea(2,3);
printf("반지름:%d 파이:%d",cir1.r,cir1.pi);
return 0;
}
반응형