1. 헤더파일에는 선언만 들어가야 한다. 변수의 정의나 함수의 정의가 들어가면 안된다

 

(정의 자체가 문제가 되지는 않지만, 동일한 헤더를 여러 파일에 삽입시 중복 정의가 되어버리는 문제

 

가 발생할 수 있음)

 

 

2. 헤더파일의 #ifndef~ 구문은 하나의 코드파일에서 같은 헤더를 중복해서 include 하려고 할 때 헤더

 

파일의 중복 삽입을 막아주는 역할을 한다. 하나의 헤더파일은 여러 개의 코드파일에 include 될 수 있

 

다. #ifndef~으로 중복을 막는다는 것은 전체 코드파일에서 중복적으로 include 되는 것을 막는다는 것

 

이 아니고, 한 코드파일 내에서 중복적으로 include 되는 것을 막는 다는 의미이다. 

 

 

------------------------------------

 

그동안 잘 안쓰던 C로 과제를 짤 일이 생겼었는데, 실수로 헤더파일 안에다가 변수를 정의했다.

 

그래놓고서는 변수가 중복 정의되었다는 컴파일 에러가 왜 뜨는지 이해를 못하고 있었다...

 

(나는 #ifndef으로 전체 코드파일에 헤더가 하나만 include되는걸로 착각하고 있었던것)

 

아마 C++을 하면서 헤더파일 안에다가 클래스와 멤버함수의 정의까지 넣어놓는 습관이 있어서 착각을 

 

했던 것 같다

 

그나마 다행인건 헤더파일 안에다가 static 변수로 정의를 해놨다는거... 머 임시방편이지만

 

암튼 그래서 과제를 제출하고 나서야 뭐가 문제였는지를 알 수 있었다





Posted by huammmm1
,