OFFICE/프로그램

#ifndef #else endif 에 대해서..

gandus 2011. 7. 14. 16:59
어떤 소스파일에 
#include<a.h>
#include<a.h>   이렇게 두 번의 정의가 있다고 가정하자.

안에는 #define A 10  이라고 적혀있다.

그렇다면 컴파일시, 2번 중복정의로 인해서 에러가 발생한다.
그래서 ifndef ... 을 사용하는 것이다.


#ifndef A_H
  #define A_H
  #define A 10
#endif

   중간소스...

#ifndef A_H
  #define A_H
  #define A 10
#endif

이렇게 정의하면, 처음에는 A_H가 정의되어 있지 않으니
define A_H  define A 10 을 수행한다.

하지만 동작하다가 다시 만나면, 이미 정의되어 있기 때문에 
다음번에는 무시하고 endif를 수행한다.

이렇게 중복된 선언을 막을 수 있게 해준다.



Mil.h 파일에도 동일한 내용이 등장한다.
생각해보자...

#ifndef __MIL_H
   #define __MIL_H

//TBR MIL 8.0
#ifndef M_MIL_75_COMPATIBLE
  #define M_MIL_READY_FOR_MIL80 1
  #define M_MIL_USE_64_BIT_ATTRIBUTES 1

#else
  #define M_MIL_READY_FOR_MIL80 0
  #define M_MIL_USE_64_BIT_ATTRIBUTES 0
 
#endif