Различия между [в] и [retval] в определениях IDL COM

В PHP и C++ можно использовать printf () функция

printf("$%01.2f", $money);
8
задан LeopardSkinPillBoxHat 16 October 2009 в 00:19
поделиться

1 ответ

[in, out] означает, что действительное значение передается при вызове метода, а действительное значение присутствует (на которое указывает указатель), когда метод возвращает успех. [out] означает, что указанное значение может быть любым при вызове метода, но оно будет действительным, когда метод вернет успех. Оба параметра [out] и [in, out] должны быть указателями - их значения неизменны и действительны, а требования действительности применяются только к тем переменным, на которые они указывают.

[out, retval] - это синтаксический сахар, указывающий, что при создании оболочки Native COM Support этот самый параметр должен быть преобразован в возвращаемое значение. Например,

HRESULT MyMethod( [out] long* OutParam1, [out, retval] long* OutParam2 );

становится

long IWrappedInterface::MyMethod( long* OutParam1 );

. Если вы не отметите его [retval] , оболочка будет содержать метод с исходной подписью:

HRESULT IWrappedInterface::MyMethod( long* OutParam1, long* OutParam2 );

Только последний [out] параметр можно пометить как [out, retval] . Параметры [in, out] нельзя пометить как [retval] .

25
ответ дан 5 December 2019 в 06:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: