Как указать значение по умолчанию для VARIANT_BOOL? - PullRequest
5 голосов
/ 25 сентября 2011

MS IDL имеет синтаксис для указания defaultvalue для параметров.Я попытался указать значение по умолчанию для функции, которая принимает VARIANT_BOOL:

[id(42)] HRESULT Foo([in, defaultvalue(VARIANT_TRUE)] VARIANT_BOOL bar);

и получил следующее сообщение об ошибке:

ошибка MIDL2035: ожидается постоянное выражение

Каков правильный синтаксис для указания того, что значение по умолчанию bar должно быть VARIANT_TRUE?

Ответы [ 2 ]

6 голосов
/ 25 сентября 2011

VARIANT_TRUE # определяется в WTypes.h. Вы не можете напрямую использовать это в вашем .idl. Общий подход заключается в простом использовании значения напрямую, как это делается в mshtml.idl, например:

  [id(42)] HRESULT Foo([in, defaultvalue(-1)] VARIANT_BOOL bar);

Или вы можете добавить #define к вашему .idl, если хотите, поместите его где-то в верхней части:

#define VARIANT_TRUE -1
#define VARIANT_FALSE 0
1 голос
/ 26 сентября 2011

Хотя не следует смешивать bool, BOOL и VARIANT_BOOL, похоже, что в idl BOOL интерпретируется как значение VARIANT_BOOL.

[id(42)] HRESULT Foo([in, defaultvalue(TRUE)] VARIANT_BOOL bar);

При вызове из VBScript без указания параметра он достигает кода C ++ как -1.

Я не уверен, какой путь более идиоматичен TRUE или, как предложил @Hans -1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...