C++ 헤더 파일에서 #ifndef 및 #define이 사용되는 이유는 무엇입니까?
보통 헤더 파일의 선두에 다음과 같은 코드가 표시됩니다.
#ifndef HEADERFILE_H
#define HEADERFILE_H
그리고 파일 끝에는
#endif
이것의 목적은 무엇입니까?
이들은 #간수 포함이라고 합니다.
헤더가 포함되면, 헤더에 일의의 값이 있는지 아닌지가 체크됩니다.HEADERFILE_H
)가 정의되어 있습니다.정의되지 않은 경우 정의되고 페이지의 나머지 부분으로 계속됩니다.
코드가 다시 포함되면 첫 번째는ifndef
에러가 발생하여 빈 파일이 생성됩니다.
이를 통해 유형, Enum 및 정적 변수와 같은 식별자의 이중 선언을 방지할 수 있습니다.
#ifndef <token>
/* code */
#else
/* code to include if the token is defined */
#endif
#ifndef
지정된 토큰이 에 저장되어 있는지 여부를 확인합니다.#defined
파일의 앞부분 또는 포함된 파일에 있습니다.그렇지 않은 경우, 그 파일과 종료 사이에 코드가 포함됩니다.#else
또는 없는 경우#else
존재합니다.#endif
진술. #ifndef
는 헤더 파일이 포함된 후 토큰을 정의하고 해당 파일의 맨 위에 토큰이 설정되어 있지 않은 것을 체크함으로써 헤더파일을 idempotent로 만들기 위해 자주 사용됩니다.
#ifndef _INCL_GUARD
#define _INCL_GUARD
#endif
따라서 동일한 헤더 파일이 여러 번 포함되지 않습니다.
#ifndef __COMMON_H__
#define __COMMON_H__
//header file content
#endif
이 헤더 파일을 여러 파일에 포함했다고 가정합니다.따라서 __COMMON_H__가 정의되지 않은 경우 정의되고 헤더 파일이 포함됩니다.
다음에 __COMMON_H__가 정의되므로 다시 포함하지 않습니다.
이들은 ifdef 또는 가드라고 불립니다.
작은 프로그램을 작성할 경우 필요하지 않은 것처럼 보일 수 있지만, 프로젝트가 커짐에 따라 하나의 파일을 의도적으로 또는 의도하지 않게 여러 번 포함할 수 있으며, 이로 인해 이미 선언된 변수와 같은 컴파일 경고가 발생할 수 있습니다.
#ifndef checks whether HEADERFILE_H is not declared.
#define will declare HEADERFILE_H once #ifndef generates true.
#endif is to know the scope of #ifndef i.e end of #ifndef
#ifndef가 true를 생성하는 것을 의미한다고 선언되지 않으면 #ifndef와 #endif 사이의 부분만 실행됩니다.그러면 식별자, 열거형, 구조 등이 다시 선언되지 않습니다.
언급URL : https://stackoverflow.com/questions/1653958/why-are-ifndef-and-define-used-in-c-header-files
'programing' 카테고리의 다른 글
vuex- 상태가 함수 또는 개체 리터럴로 반환됨 (0) | 2022.07.05 |
---|---|
C malloc 어설션 실패가 발생하는 이유는 무엇입니까? (0) | 2022.07.05 |
일반 C에서 스레드를 시작하려면 어떻게 해야 합니까? (0) | 2022.07.05 |
vue-link : 라우터 링크에서 밑줄을 삭제하는 방법 (0) | 2022.07.05 |
PAGE REGRESH에서 vuex 저장소의 데이터가 손실 (0) | 2022.07.05 |