2011-01-24 7 views

答えて

4
void foo(__deref_out_opt PSTR* bar); 

void foo(__deref_opt_out PSTR* bar); 

PSTR*アウトパラメータは、発呼者が文字列へのポインタを受け取るバッファを通過します。

__deref_out_optでは、文字列はオプションです(関数は呼び出し元提供バッファにNULLを格納します)。

__deref_opt_outでは、バッファーはオプションです(呼び出し側は、出力値の無関係を示すためにNULLを渡します)。

おそらく、これらのコンセプトを組み合わせることができます。そのためには__deref_opt_out_opt修飾語が必要です。

+0

ここで、関数が出力パラメータをNULLに設定する可能性のある「その他のケース」に対して_optを配置しますか? – John

+0

'out'の後、' __deref_out_opt'のように。 SALのドキュメントでは、 '__deref_opt'の場合を特別に記述しています。その場合、バッファは存在しないかもしれません。バッファが存在するようにしたいので、 '__deref'は平易ですが、そこに格納されているポインタはNULLにすることができるので、' _out_opt'です。 –

関連する問題