다음을 통해 공유


pragma 특성

#pragma midl_echo 지시문은 MIDL에 따옴표 문자 없이 지정된 문자열을 생성된 헤더 파일로 내보내도록 지시합니다.

#pragma midl_echo("string")
#pragma token-sequence
#pragma pack (n)
#pragma pack ( [push] [, id] [, n} )
#pragma pack ( [pop] [, id] [, n} )

매개 변수

string

생성된 헤더 파일에 삽입되는 문자열을 지정합니다. 따옴표는 삽입 프로세스 중에 제거됩니다.

token-sequence

MIDL 컴파일러에서 처리하지 않고 생성된 헤더 파일에 삽입되는 토큰 시퀀스를 #pragma 지시문의 일부로 지정합니다.

n

현재 팩 크기를 지정합니다. 유효한 값은 1, 2, 4, 8 및 16입니다.

id

사용자 식별자를 지정합니다.

설명

IDL 파일에 표시되는 C 언어 전처리 지시문은 C 컴파일러의 전처리기에서 처리됩니다. IDL 파일의 #define 지시문은 MIDL 컴파일 중에 사용할 수 있지만 C 컴파일러는 사용할 수 없습니다.

예를 들어 전처리기에서 "#define WINDOWS 4" 지시문이 발견되면 전처리기는 IDL 파일에서 발생하는 모든 "WINDOWS"를 "4"로 바꿉니다. "WINDOWS" 기호는 C 컴파일 시간에 사용할 수 없습니다.

C 전처리기 매크로 정의가 MIDL 컴파일러를 통해 C 컴파일러로 전달되도록 하려면 #pragma midl_echo 또는 cpp_quote 지시문을 사용합니다. 이러한 지시문은 MIDL 컴파일러에 따옴표가 제거된 매개 변수 문자열이 포함된 헤더 파일을 생성하도록 지시합니다. #pragma midl_echocpp_quote 지시문은 동일합니다.

#pragma pack 지시문은 MIDL 컴파일러에서 구조체의 압축을 제어하는 데 사용됩니다. /Zp 명령줄 스위치를 재정의합니다. pack(n) 옵션은 현재 팩 크기를 특정 값인 1, 2, 4, 8 또는 16으로 설정합니다. 팩(푸시) 및 팩(팝) 옵션에는 다음과 같은 특성이 있습니다.

  • 컴파일러는 압축 스택을 유지 관리합니다. 압축 스택의 요소에는 팩 크기 및 선택적 ID가 포함됩니다. 스택은 현재 팩 크기가 스택 맨 위에 있는 사용 가능한 메모리에 의해서만 제한됩니다.
  • 팩(푸시)을 사용하면 현재 팩 크기가 압축 스택으로 푸시됩니다. 스택은 사용 가능한 메모리에 의해 제한됩니다.
  • 팩(push,n)은 팩(푸시)과 같고 그 뒤에 팩(n)이 붙습니다.
  • Pack(push, id)은 팩 크기와 함께 ID 를 압축 스택에 푸시합니다.
  • 팩(push, id, n)은 pack(push, id) 뒤에 팩(n)이 붙는 것과 같습니다.
  • 팩(팝)을 사용하면 압축 스택이 터집니다. 불균형 팝은 경고를 발생시키고 현재 팩 크기를 명령줄 값으로 설정합니다.
  • pack(pop, id, n)을 지정하면 n 은 무시됩니다.

MIDL 컴파일러는 헤더 파일의 \cpp_quotepragma 지시문에 지정된 문자열을 IDL 파일에 지정되고 IDL 파일의 다른 인터페이스 구성 요소를 기준으로 지정하는 시퀀스에 배치합니다. 문자열은 일반적으로 모든 가져오기 작업 후에 IDL 파일의 인터페이스 본문 섹션에 표시됩니다.

MIDL 컴파일러는 접두사 " midl_ "로 시작하지 않는 #pragma 지시문을 처리하려고 시도하지 않습니다. IDL 파일의 다른 #pragma 지시문은 변경 없이 생성된 헤더 파일에 전달됩니다.

/* IDL file */ 
#pragma midl_echo("#define UNICODE") 
cpp_quote("#define __DELAYED_PREPROCESSING__ 1") 
#pragma hdrstop 
#pragma check_pointer(on) 
 
/* generated header file */ 
#define UNICODE 
#define __DELAYED_PREPROCESSING__ 1 
#pragma hdrstop 
#pragma check_pointer(on)

참고 항목

cpp_quote

IDL(인터페이스 정의) 파일

가져오기

/Zp