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

void foo(__deref_out_opt PSTR* bar);

void foo(__deref_opt_out PSTR* bar);

最佳答案

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

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

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

大概可以合并这些概念,为此应该有一个__deref_opt_out_opt修饰符。

10-08 00:41