programing

C에서 #pragma는 한때 무엇을 의미합니까?

cafebook 2023. 6. 27. 23:38
반응형

C에서 #pragma는 한때 무엇을 의미합니까?

중복 가능성:
#hymma - 이해를 돕기

나는 그것을 보았습니다.pragma여러 번, 하지만 항상 혼란스러워요, 그게 무엇을 하는지 아는 사람?창문만 있나요?

다음 프리프로세서 코드를 대체하는 데 사용됩니다.

#ifndef _MYHEADER_H_
#define _MYHEADER_H_
...
#endif

레거시 컴파일러를 지원하기 위해 두 가지를 모두 추가하는 것이 좋은 관례입니다(이는 드문 일이지만).

#pragma once
#ifndef _MYHEADER_H_
#define _MYHEADER_H_
...
#endif

그래서 만약에#pragma once실패합니다. 이전 방법은 계속 작동합니다.

2023년 업데이트

나는 댓글 섹션에서 몇몇 사람들이 대신 경비원을 사용하는 것을 옹호하는 것을 봅니다.#pragma once지원하지 않는 특수 컴파일러를 대상으로 하지 않는 한 2023년 이후에는 거의 의미가 없습니다.#pragma once.

오늘의 모범 사례는 다음과 같은 경우에만 사용하는 것입니다.#pragma once그리고 경비원들에게 전혀 신경쓰지 마세요.이유는

  1. 모든 주요 컴파일러들은 이것을 영원히 지원했고 그것은 변하지 않을 것입니다.
  2. 사용.#pragma컴파일러가 내부 캐시를 사용할 수 있게 해줍니다. 물론 파일 내용을 항상 포함하는 사전 캐시를 사용하는 것보다 더 빠릅니다. 나중에 가드에 걸려 전체를 무시할 수 있습니다.
  3. 훨씬 짧고 추가/유지관리가 용이합니다.

C 및 C++ 프로그래밍 언어에서 #pragma once는 현재 소스 파일을 단일 컴파일에 한 번만 포함하도록 설계된 비표준적이지만 널리 지원되는 전처리기 지시어입니다.따라서 #pragma는 한때 #가 가드를 포함하는 것과 동일한 목적을 수행하지만 코드 감소, 이름 충돌 방지, 컴파일 속도 향상 등의 몇 가지 이점이 있습니다.

자세한 내용은 위키백과 문서를 참조하십시오.

일반적으로,#pragma디렉티브는 컴파일러별 프리프로세서 명령을 구현하기 위한 것입니다.그것들은 표준화되어 있지 않기 때문에, 당신은 그것들에 너무 많이 의존하지 말아야 합니다.

이 경우에는,#pragma once의 목적은 헤더 파일에 사용하는 포함 가드를 대체하여 다중 포함을 방지하는 것입니다.지원하는 컴파일러에서 조금 더 빠르게 작동하므로 많은 헤더 파일이 있는 대규모 프로젝트의 컴파일 시간을 줄일 수 있습니다.#include빈번히 편집합니다.

pragma는 전처리기에 대한 지시어입니다.일반적으로 컴파일 중에 일부 추가 제어 기능을 제공하는 데 사용됩니다.예를 들어 동일한 헤더 파일 코드를 포함하지 마십시오.여러 가지 지시사항이 있습니다.답은 프래그마 단어 다음에 무엇이 나오느냐에 따라 달라집니다.

언급URL : https://stackoverflow.com/questions/5776910/what-does-pragma-once-mean-in-c

반응형