__deref_out_opt和__deref_opt_out有什么区别?

时间:2011-01-24 01:06:29

标签: windows annotations static-analysis microsoft-sal

以下SAL注释之间有什么区别?

void foo(__deref_out_opt PSTR* bar);

void foo(__deref_opt_out PSTR* bar);

1 个答案:

答案 0 :(得分:4)

PSTR* out参数表示调用者传入缓冲区,该缓冲区接收指向字符串的指针。

在__deref_out_opt中,字符串是可选的(函数在调用者提供的缓冲区中放置NULL)。

在__deref_opt_out中,缓冲区是可选的(调用者传递NULL以表示输出值不感兴趣)。

据推测,可以将这些概念结合起来,应该有一个__deref_opt_out_opt修饰符。