다음을 통해 공유


/backward_compat 스위치

/backward_compat 스위치는 RPC/COM 스텁을 생성할 때 MIDL 컴파일러가 일부 고급 기능을 해제하도록 지시합니다.

midl /backward_compat { maybenull_sizeis | zeroout_alignmentgap | 
     BSTR_byvalue_escaping | string_defaultvalue | signed_wchar_t }

스위치 옵션

maybenull_sizeis

전체 MIDL 컴파일에 [disable_consistency_check] 특성을 적용합니다.

zeroout_alignmentgap

마샬링된 버퍼의 간격을 0으로 끕니다.

BSTR_byvalue_escaping

MIDL 컴파일러에 BSTR의\n이스케이프 시퀀스를 적용하도록 지시™ ™합니다.

string_defaultvalue

MIDL 컴파일러가 [defaultvalue] 특성의 문자열을 VARIANT로 강제 변환하도록 합니다. 값을 올바른 형식으로 강제 변환하기 전에 형식을 VT_I4.

signed_wchar_t

VISUAL Basic과의 호환성을 위해 wchar_t 형식을 부호 있는 형식으로 처리하도록 MIDL에 지시합니다.

설명

  • maybenull_sizeis: [disable_consistency_check]을 참조하세요.

  • zeroout_alignmentgap: IDL이 â€"target NT60 이상으로 컴파일되면 MIDL은 멤버 또는 와이어 버퍼의 구조체 간의 맞춤 간격을 0으로 만드는 스텁을 만듭니다. 명령줄 스위치 /backward_compat zeroout_alignmentgap MIDL에 이 기능을 사용하지 않도록 지시합니다.

    다음 예제 구조에서 와이어 버퍼에는 char 멤버 다음에 하이퍼 멤버를 8로 맞추는 7 바이트 맞춤 간격이 포함됩니다. 대상 NT60 이상을 사용하는 경우 스위치를 사용하지 않는 한 MIDL은 해당 간격을 0으로 줄입니다.

    IDL 파일:

    typedef struct _structwithgaps{
        char c;
        // 7 byte gap to align the following hyper to 8 
        hyper h;
    } structwithgap;
    

    이 스위치는 공개 위험이 크게 증가할 수 있는 약간의 성능 향상을 제공할 수 있습니다.

  • BSTR_byvalue_escaping: 기본적으로 MIDL 컴파일러는 문자열 상수를 형식 VT_LPSTR 또는 ™\nVT_LPWSTR ™ 변환할 때 OLE Automation에 대한 문자열 상수에서 이스케이프 시퀀스를 처리하지 않습니다. 이 이전 버전과의 호환성 스위치 옵션을 사용하면 이스케이프 시퀀스가 평가됩니다.

  • string_defaultvalue: MIDL 컴파일러가 [defaultvalue] 특성의 숫자 문자열을 VARIANT로 강제 변환하도록 합니다. 값을 올바른 형식으로 강제 변환하기 전에 형식을 VT_I4. 이로 인해 경우에 따라 정밀도 손실이 발생할 수 있으므로 이 스위치 옵션은 권장되지 않습니다.

  • signed_wchar_t: wchar_t 형식을 Visual Basic과의 호환성을 위해 부호 있는 형식으로 처리하도록 MIDL에 지시합니다.