초보 코린이의 성장 일지
ODR (One Definition Rule) - 유일 정의 규칙 본문
- 모든 변수, 함수, 클래스, enum, 템플릿 등등 의 정의는 유일해야 한다.
- inline가 아닌 모든 함수의 변수들의 정의는 전체 프로그램에서 유일해야 한다.
정의 (Definition) 와 선언 (Declaration)
선언 - 새로운 선언을 하거나, 기존에 선언된 이름을 재선언 하는 것
정의 - 선언을 포함하는 개념으로, 선언된 개체를 완전히 정의함을 뜻함
선언
정의
번외
extern 지정자가 들어간 선언의 경우 명시적으로 초기화 되지 않는다면 선언
a는 선언이지만 정의가 아니다.
b는 1로 초기화 되었으므로 정의 된 것이다.
ODR규칙에 위배되지도 않으며, f()는 올바른 코드 f의 선언이지 정의가 아니기 때문에 여러번의 선언해도 문제가 없다..
컴파일 오류가 발생한다. inline로 정의되지 않는 모든 함수들과 변수들의 경우 프로그램을 구성하는 정의는 단 하나여야 한다는 조건을 무시하는 행동
ODR 위반이 아니다. 나중에 1번과 2번이 합처졌을 때 정의는 딱 하나가 있기 때문이다.
ODR 위반이 된다. 정의가 중복되기 때문이다
'C++' 카테고리의 다른 글
인라인(Inline) 함수 (0) | 2023.01.08 |
---|---|
함수원형과 포인터 및 Const 사용 (0) | 2023.01.08 |
Comments