__deref_out_opt 和 __deref_opt_out 有什么区别?

发布于 2024-10-14 05:12:23 字数 221 浏览 2 评论 0原文

以下 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

溺渁∝ 2024-10-21 05:12:23

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文