2015-01-15 2 views
4

enum 하나만 들어있는 간단한 IDL 파일이 있습니다. 식별자 중 하나는 cy입니다.MIDL 컴파일 오류 : "cy"가있는 열거 형

[ 
    uuid(2642345F-F2AB-3600-8926-26E823800902), 
    version(1.0), 
] 

library MyLib 
{ 
    typedef[ uuid(a0b0aa7b-345f-4b3a-b88f-d6cdd048e205) ] 
    enum Codes 
    { 
     cy, 
     abc 
    } Codes; 
}; 

그러나 관한이를 컴파일하고 같이 나에게 오류를 제공하지 않습니다

MIDL2025: expecting an identifier near "cy"

내 첫번째 추측은 cy은 MIDL에서 키워드/예약어는 것이 었습니다 -하지만 그것은 아니다.
제 생각에 cy은 이미 어딘가에서 사용되었거나 유형입니다.하지만 그렇지 않습니다.

여기에 문제가 될 수있는 아이디어가 있습니까?

+0

라이브러리 {} 블록 안에 열거 형을 넣을 수 없습니다. 그냥 밖으로 이동하십시오. –

답변

3

일부 실험에 따르면 컴파일러에서 WTypes.h의 대/소문자를 구분하지 않는 이름을 사용하지 않는 것 같습니다.

예를 들어, 이러한 이름을 거부합니다 :

byte_blob 
bstr 
clipdata 
decimal 
userbitmap 
userhbitmap 
remhglobal 
statflag 
...etc... 
+0

하지만 내 코드의 열거 형 라이브러리가 다른 라이브러리 (MyLib)에 있습니다. 그렇다면 왜 Wtypes.h에있는 사람들과 충돌해야합니까? – athena

0

단계는 문제 특히 cy 또는 다른 뭔가 있는지 여부를 조사하는 것입니다.

처음에는 cyxyzzy 또는 zx으로 변경하고 여전히 불만이 있는지 확인합니다. 그렇다면 이름의 구조 (예 : 모두 소문자 인 경우)에 문제가있을 수 있습니다. 그렇지 않은 경우 특정 cy 식별자와 관련이 있습니다.

abccy 행을 스와핑하여 오류가 cy 다음인지 확인하십시오. 문제가 될 수 있도록 currency 데이터 유형에 별명이 cy을 제안하는 것 그물에 midl cy를 검색 할 때 고려해야 할 수 있습니다

것은, 꽤 많은 히트 곡이있다.

내가 제안한 변경 사항은 해당 가능성을 확인하거나 거부해야하지만 최소한 문제의 범위를 결정하는 데 도움이됩니다.