第一的:
LPCTSTR asdfsdf = (LPCTSTR)(_bstr_t)v;
printf("%s\n", asdfsdf);
第二:
printf("%s\n", (LPCTSTR)(_bstr_t)v);
它们是相同的,但第一个条件会导致代码不可读
为什么?
该类将 BSTR 封装在 C++ 类中_bstr_t
。在你的第一个例子中:
LPCTSTR asdfsdf = (LPCTSTR)(_bstr_t)v;
你正在创建一个_bstr_t
对象,从中提取LPCTSTR
出来,但是临时_bstr_t
对象被破坏了。任何asdfsdf
指向的东西现在都被释放了,不能再使用了。
在你的第二个例子中
printf("%s\n", (LPCTSTR)(_bstr_t)v);
临时_bstr_t
对象直到调用之后才被破坏,因此使用该值printf()
没有问题。LPCTSTR