__deref_out_opt 和 __deref_opt_out 有什么区别?
以下 SAL 注释之间有什么区别?
void foo(__deref_out_opt PSTR* bar);
void foo(__deref_opt_out PSTR* bar);
What is the difference between the following SAL annotations?
void foo(__deref_out_opt PSTR* bar);
void foo(__deref_opt_out PSTR* bar);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
PSTR*
输出参数意味着调用者传入一个接收指向字符串的指针的缓冲区。在 __deref_out_opt 中,字符串是可选的(函数将 NULL 放入调用者提供的缓冲区中)。
在 __deref_opt_out 中,缓冲区是可选的(调用者传递 NULL 来指示对输出值不感兴趣)。
据推测,可以将这些概念结合起来,应该有一个 __deref_opt_out_opt 修饰符。
A
PSTR*
out parameter means the caller passes in a buffer which receives a pointer to a string.In __deref_out_opt, the string is optional (the function puts NULL in the caller-provided buffer).
In __deref_opt_out, the buffer is optional (the caller passes NULL to indicate disinterest in the output value).
Presumably, it's possible to combine these concepts, there should be a
__deref_opt_out_opt
modifier for that.