При попытке COM, C # использует по умолчанию stdcall или вам нужно указать - PullRequest
0 голосов
/ 30 марта 2011

Книга, которую я использую, описывает использование COM в C ++ и рекомендует __stdcall в качестве спецификатора, утверждая, что больше языков используют этот метод очистки стека.

Однако я рассматриваю будущую совместимость с C #. Использует ли C # по умолчанию stdcall или он должен быть указан?

Ответы [ 2 ]

2 голосов
/ 30 марта 2011

Я бы порекомендовал использовать stdcall в качестве спецификатора по умолчанию, так как он используется по умолчанию в C #. Однако легко изменить соглашение о вызовах через атрибут «CallingConvention».

http://msdn.microsoft.com/en-us/library/system.runtime.interopservices.callingconvention.aspx

2 голосов
/ 30 марта 2011

С COM-взаимодействием это не так важно.

Если вы используете Platform Invocation Services (P / Invoke) с C #, тогда по умолчанию используется stdcall. (Технически, это Winapi , который по умолчанию равен Stdcall на рабочем столе), но его можно переопределить в спецификации DllImport.

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