2015. 2. 27.

#ifdef 란?

  #define은 PI = 3.141592 처럼 어떤 고정된 숫자를 정의할 때 자주 쓰곤 했다.
그런데 .h 헤더파일에서 #ifdef란 것이 쓰이는 것을 알 수 있었다. 이것은 무엇일까?

 아래 <그림1>과 같이 컴파일을 할 때 여러 .c파일이 하나의 .h파일을 쓴다고 하자.  이들은 나중에 하나의 .o 파일이 될것이다.
그런데 컴파일을 하게 되면 사실 .h파일과 .c파일이 하나로 묶이게 되는데, 불필요하게 3개 모두 같은 걸 묶을 필요가 없고 또한
컴파일러에 따라 같은 이름의 .h를 쓰기 때문에 오류가 난다. <그림2>와 같은 상황이 되어 버리는 것이다.
 따라서 #ifdef를 쓰자. 이것을 쓰게 되면 .c파일 중 어느 하나만 .h와 묶이게 되어 중복을 피하게 된다. 아래와 같은 방법으로 사용하면 된다.


#ifndef __CJM_H //컴파일러가 이전에 define된 것이 있는지 확인하고 있다면 걍 end_if로 간다.
#define __CJM_H //없다면 새로 define을 한다.

...

#end_if //__CJM_H
<그림1>



<그림2>

댓글 없음: