У меня есть простой файл 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
уже использовался где-то или является типом — но это не так.
Любая идея о том, что может быть проблема здесь?
Основываясь на некоторых экспериментах, кажется, что компилятор запрещает вводить нечувствительные к регистру имена из WTypes.h.
Например, он также будет отрицать эти имена:
byte_blob
bstr
clipdata
decimal
userbitmap
userhbitmap
remhglobal
statflag
...etc...
первый Шаг должен выяснить, является ли это проблемой конкретно с cy
или что-то еще.
Для начала я бы изменил его на cyxyzzy
или же zx
и посмотреть, если он все еще жалуется. Если так, то, возможно, что-то не так с состав имени (например, все строчные буквы). Если нет, то, вероятно, это связано с конкретными cy
идентификатор.
Другая возможность обменивается вокруг abc
а также cy
линии, чтобы увидеть, следует ли ошибка за cy
,
Одна вещь, которую вы можете рассмотреть, есть довольно много хитов при поиске midl cy
в сети, которые, кажется, предлагают cy
связан с currency
тип данных, так что может быть проблемой.
Изменения, которые я предложил выше, должны, надеюсь, подтвердить или опровергнуть эту возможность, но, как минимум, они помогут в определении масштабов проблемы.