我有這樣的代碼,使用USE_CONVERSION宏在C++項目...做不USES_CONVERSION宏觀
如果寫得好,(不是我寫的),我想知道是否有任何更好的方法這樣做,沒有USES_CONVERSION和W2A宏。
STDMETHODIMP CInterpreter::GetStringVar(BSTR bstrNamespace, BSTR bstrVar, BSTR *pbstrValue)
{
USES_CONVERSION;
try
{
if (!pbstrValue) return E_POINTER;
char* pszNamespace= W2A(_bstr_t(bstrNamespace).operator wchar_t*());
char* pszVar= W2A(_bstr_t(bstrVar).operator wchar_t*()); // Is this not better done another way????
char pszErrStr[kPYTHONERRBUFSIZE];
char pszStrValue[kPYTHONSTRVALUESIZE];
BOOL bResult= Python_GetStringVar(pszNamespace, pszVar, pszErrStr, pszStrValue, kPYTHONSTRVALUESIZE);
*pbstrValue= _bstr_t(pszStrValue).operator BSTR();
if (!bResult)
throw x::internal_error(A2W(pszErrStr));
return S_OK;
}
}
由於也有一個BSTR,它看起來像微軟的MFC/ATL的東西。請相應標記。 – MSalters 2010-06-22 07:50:39
BSTR是一個Win32(平臺SDK)類型。 _bstr_t也是Platform SDK的一部分(它被#import使用)。 – reece 2012-11-27 00:38:49