“#pragma comment”는 무엇을 의미합니까?


답변:


188

#pragma comment생성 된 개체 파일에 주석을 남기도록 Visual C ++를 나타내는 컴파일러 지시문입니다. 그러면 링커가 오브젝트 파일을 처리 할 때 주석을 읽을 수 있습니다.

#pragma comment(lib, libname) 링커가 프로젝트 속성에서 라이브러리 속성을 추가 한 것처럼 라이브러리 종속성 목록에 'libname'라이브러리를 추가하도록 지시합니다. Linker->Input->Additional dependencies

MSDN에 대한 #pragma 의견 참조


2
MSVC 전용입니까 아니면 GCC / Intel Compiler / Clang과 비슷한 것이 있습니까? 폴더 경로를 추가하는 옵션이 Linker -> General -> Additional Library Directories있습니까?
Royi

4

나는 항상 "컴파일러 지시문"이라고 불렀습니다. 컴파일 단계에서 컴파일러가 위에 표시된 것과 같은 라이브러리를 포함하여 분기, 특정 오류 비활성화 등을 수행하도록 지시합니다.

컴파일러 회사는 일반적으로 기능을 용이하게하기 위해 자체 확장을 만듭니다. 예를 들어, Microsoft는 "#pragma once"거래를 시작했으며 MS 제품에만 적용되었으므로 확실하지 않습니다.

Pragma 지시문 표에 "#pragma comment"가 포함되어 있습니다.

HTH

예를 들어 GCC에 자체 #pragma 세트가 있다고 생각합니다.


6
당신은 그 질문을 오해했습니다. 그는 pragma가 무엇인지 묻지 않고 지시문 대신 주석으로 언급합니다. 그는 무엇을 #pragma comment의미 하는지 구체적으로 묻고 있습니다.
Rob Kennedy

2
어색한 것은 실제로 링커에 대한 지시문입니다.
Hans Passant

@Hans : 흠,이 경우 "링커 지시문"이라고 부르겠습니까?
JustBoo

1
아니요, 여전히 컴파일러 지시문입니다. 링커가 해당 라이브러리를 포함하도록 메모를 남기라고 컴파일러에 지시합니다.
HerrJoebob 2016 년


0

Pragma 지시문은 운영 체제 또는 시스템 별 (x86 또는 x64 등) 컴파일러 옵션을 지정합니다. 사용 가능한 몇 가지 옵션이 있습니다. 자세한 내용은 https://msdn.microsoft.com/en-us/library/d9x1s805.aspx를 참조하십시오.

#pragma comment( comment-type [,"commentstring"] ) 이 형식이 있습니다.

다른 주석 유형에 대한 자세한 내용은 https://msdn.microsoft.com/en-us/library/7f0aews7.aspx 를 참조하십시오 .

#pragma comment(lib, "kernel32") #pragma comment(lib, "user32")

위의 코드 줄에는 링커에서 검색해야하는 라이브러리 이름 (또는 경로)이 포함되어 있습니다. 이러한 세부 사항은 오브젝트 파일에서 라이브러리 검색 레코드의 일부로 포함됩니다.

그래서,이 경우 kernel.libuser32.lib링커에 의해 검색되고 최종 실행 파일에 포함되어 있습니다.


0

MSDN에서 제공하는 답변과 문서가 가장 좋지만 #pragma comment링크 타임에 링커에 명령을 보내야하는 경우가 많은 일반적인 경우를 하나 추가하고 싶습니다.

#pragma comment(linker,"/ENTRY:Entry")

엔트리 포인트 양식을 변경하려면 링커에게 WinMain()Entry()(가) 것을 이후 CRTStartup에 설정 제어를 전송하는 것Entry()

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.