초보 코린이의 성장 일지

ODR (One Definition Rule) - 유일 정의 규칙 본문

C++

ODR (One Definition Rule) - 유일 정의 규칙

코오린이 2023. 1. 8. 21:54

- 모든 변수, 함수, 클래스, 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