헤더파일 중복을 방지하기 위해서 아래와 같은 형식을 사용합니다.
#ifndef _XXXX_H
#define _XXXX_H
...
#endif
의미는 잘 알겠으나, 한가지 의문점이 있습니다.
일반적으로 헤더 파일에는 선언(declaration)을 합니다. 그런데 선언은 중복 되어도 에러가 발생하지 않습니다. 중복 에러가 발생할 수 있는 것은 정의(definition)입니다. 따라서 헤더 파일의 본래 목적대로 선언만을 적어놓는다면 중복 오류가 발생할 일이 없습니다. 그렇다면 왜 중복 방지를 해야할까요?
검색을 해보니 이 글에서 든 예시에서 헤더 파일에 구조체를 정의하는 것을 발견 하였습니다. 구조체를 포함하고 있는 헤더 파일에 중복 선언 방지 처리를 해놓지 않으면 문제가 발생할 수 있게 됩니다. 헤더 파일에는 함수의 선언 뿐만이 아니라 구조체를 정의 할 수도 있습니다. 이것은 타당하다고 생각합니다. 어러 .c 파일에서 같은 구조체를 불러와 사용해야 할 일이 있으니까요. 구조체는 '정의'해야 하는 것이기 때문에 이를 포함하고 있는 헤더 파일은 중복 방지 처리가 반드시 필요할 것입니다.
'연구 노트 > C, C++' 카테고리의 다른 글
C++를 사용할 수 있는 GUI 라이브러리 모음 (0) | 2022.08.24 |
---|---|
[다시 C언어] 함수 반환형, 안적어도 될까? (0) | 2021.02.18 |
[다시 C언어] 시작하며. (0) | 2021.02.18 |
C언어에서 가변 인자 함수를 만들려면? (0) | 2021.02.07 |
구조체 내부 변수 뒤 이것 ':'의 정체, '비트 필드' (0) | 2021.01.26 |