sha*_*oth 5 windows com interop bstr com-interop
至少通常的做法是将null BSTR(null WCHAR*指针)视为空字符串,并相应地设计所有操作BSTR的代码.这个问题的答案也是这样说的.
这种做法记录在哪里?有没有描述这个惯例的官方文件?
好吧,在该问题的公认答案中给出的链接是Eric Lippert的文章,Eric的BSTR语义完全指南.虽然它绝对不是官方文档,但Lippert是COM的知名权威(特别是在脚本领域).
但是,官方文档有这样的说法:
没有数据元素的BSTR是空BSTR或NULL BSTR.空BSTR指示当前但零长度的数据值.NULL BSTR表示不存在的数据值.
因此,正式它们都BSTR没有数据元素,但语义略有不同(尽管没有什么可说的,这两种情况需要在应用程序中以不同的方式处理).在这种情况下,我肯定会遵循Lippert关于同样对待它们的建议.对我而言,他对实际实施工作方式的实际经验比官方BSTR文档中的一句话更重要.
Michael Burr 给出了我认为应该被接受的答案。不幸的是BSTR,MSDN 中的页面没有记录这种做法。
此外,您可以从 MSDN 文档中的这些页面推断此行为:
SysFreeStringpage 报告 if bstrisnull函数只是返回。SysStringLenpage 报告null为bstr参数传递 a 会为字符串长度返回零。SysStringByteLen页面报告相同的行为;null表示零长度。但是,文档并不完整:
SysReAllocString没有提到如果*pbstr是会发生什么null。SysReAllocStringLen没有提到如果*pbstr是会发生什么null。| 归档时间: |
|
| 查看次数: |
1964 次 |
| 最近记录: |