programing

C++ 헤더 파일에서 #ifndef 및 #define이 사용되는 이유는 무엇입니까?

firstcheck 2022. 7. 5. 00:16
반응형

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

반응형