카테고리 없음

중복 정의 피하는 방법 (#ifndef와 #define을 이용하여)

zuyo 2019. 5. 9. 01:21
반응형

헤더 파일간의 관계가 얽히면 중복 정의가 될 수 있다.
이 문제는 매크로 파트에서 배운 조건부 컴파일을 이용해서 해결가능하다.
#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;
}
반응형