1. 중복 정의 문제
- 식별자는 하나의 정의만 가질 수 있다.
따라서 변수 식별자를 두 번이상 정의한 프로그램은 컴파일 오류가 발생한다.
- 함수를 두 번 이상 정의하는 프로그램도 컴파일 오류가 발생한다.
2. 헤더 가드
- 헤더 가드라는 메커니즘을 통해 위 문제를 해결할 수 있다. (실제로 이전 회사의 코드에서 많이 사용)
- 헤더 가드는 조건부 컴파일 지시자를 이용한다.
e.g)
#ifndef MATH_H
#define MATH_H
3. #pragma once
- 현재 많은 최신 컴파일러는 #pragma 지시자를 이용하여 단순한 헤더 가드를 지원한다.
- C++ 언어의 공식적인 부분이 아니므로 모든 컴파일러가 지원하는 것은 아니다.
따라서 호환성을 위해 헤더 가드를 사용하는 것이 좋다.
'Language > C++' 카테고리의 다른 글
[C++] 포인터, 더블 포인터 사용 (0) | 2020.12.15 |
---|---|
[C++] 헤더 파일 (0) | 2020.12.15 |
[C++] 포인터와 배열의 차이 (0) | 2020.12.15 |
[C++] 캐스트 연산자 (0) | 2020.12.15 |
[C++] RTTI (RunTime Type Information) (0) | 2020.12.15 |