ifndef를 사용하는 이유

JaeGu Jeong·2022년 12월 14일
0

Redefinition

같은 인자, 같은 이름을 사용하는 함수를 두번 선언하면 redefinition에러가 난다. 같은 파일 안에서 두번 중복선언을 한것이 아니라면 이 에러는 헤더를 중복선언 하였을 때 주로 발생한다. 그러므로 개발자는 컴파일 단계에서 중복헤더를 방지하도록 설계해야한다.

#pragma once

첫 번째 해결책으로 컴파일러에 강제하는 방법이 있다.
헤더파일의 최상위 줄에 작성하여 이 헤더는 한번만 선언되도록 컴파일 단계에 명령할 수 있다. 하지만 이 명령을 지원하지 않는 컴파일러가 있다는 단점이 있다. 즉, 이 명령은 모든 컴파일 환경에 100프로 호환되지 않는다. 지원하지 않는 컴파일러를 만나면 또다시 redefinition에러가 발생한다.

#ifndef

//test.h 헤더파일 예시.
#ifndef TEST_H
# define TEST_H

//헤더 소스코드...

#endif

위 헤더파일과 같이 define으로 헤더파일을 정의하고 또 다시 위 헤더파일을 컴파일하려 할 때, ifndef에서 skip되도록 설정하면 확실하게 중복되는 헤더선언을 막을 수 있다.

profile
BackEnd Developer

0개의 댓글