4

我有一个简单的 IDL 文件,其中仅包含一个enum. 标识符之一是cy.

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

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

但是,MIDL 不会编译它并给我一个错误,例如:

MIDL2025:期待“cy”附近的标识符

我的第一个猜测是这cy是 MIDL 中的关键字/保留词——但事实并非如此。
我的第二个猜测是,要么cy已经在某个地方使用过,要么是一种类型——但事实并非如此。

关于这里可能是什么问题的任何想法?

4

2 回答 2

3

根据一些实验,编译器似乎拒绝了 WTypes.h 中不区分大小写的名称。

例如,它也会拒绝这些名称:

byte_blob
bstr
clipdata
decimal
userbitmap
userhbitmap
remhglobal
statflag
...etc...
于 2015-01-15T04:41:04.557 回答
0

第一步是调查是否是特定问题或是否cy其他问题。

首先,我将其更改为cyxyzzyor zx,看看它是否仍然抱怨。如果是这样,则名称的结构可能有问题(例如全部小写)。如果不是,则可能与特定cy标识符有关。

另一种可能性是交换abccy行以查看错误是否跟在cy.

您可能需要考虑的一件事是,在网上搜索时有很多点击midl cy似乎暗示了数据类型cy的别名,因此这可能是一个问题。currency

我上面建议的更改应该有望确认或否认这种可能性,但至少,它们将有助于确定问题的范围。

于 2015-01-19T03:37:26.837 回答