以下SAL注释之间有什么区别?
void foo(__deref_out_opt PSTR* bar);
void foo(__deref_opt_out PSTR* bar);
答案 0 :(得分:4)
PSTR*
out参数表示调用者传入缓冲区,该缓冲区接收指向字符串的指针。
在__deref_out_opt中,字符串是可选的(函数在调用者提供的缓冲区中放置NULL)。
在__deref_opt_out中,缓冲区是可选的(调用者传递NULL以表示输出值不感兴趣)。
据推测,可以将这些概念结合起来,应该有一个__deref_opt_out_opt
修饰符。