그런데 .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>
댓글 없음:
댓글 쓰기