質問

次のURL: https://developer.mozilla.org/en/XPCOM_Interface_Reference/ nsICacheVisitor は次のコードチャンクです。

boolean visitDevice(in string deviceID, in nsICacheDeviceInfo deviceInfo);

私はc ++を扱っていると思っていましたが、「in」私が調べたC ++キーワードリストによると、C ++キーワードではなく、Javaキーワードでもありません。それは何のためにあり、それはどういう意味ですか?

役に立ちましたか?

解決

これは、パラメーターが入力パラメーターであることを意味します。つまり、使用されますが、関数によって変更されません。

in パラメーターの反対は out パラメーターです。つまり、パラメーターは変更されますが、明示的には返されません。それを使用するメソッドの後に out パラメーターを使用する場合、値は(潜在的に)異なります。

コメントでnosが指摘しているように、リンク先のページは .idl (インターフェース定義言語)ファイルを記述しています。私はMozillaが使用するIDLに精通していません(ただし、詳細を知りたい場合は、について読むことができます。ここ)、しかし、私はオブジェクト管理グループのIDLにある程度精通しています。 -by-result、および inout パラメーターはcall-by-value / resultです。

他のヒント

言語は、Mozillaのインターフェイス記述言語(XPIDL)です。 キーワード" in"ここで説明されています:ここ

パラメータが入力用、出力用、または両方用かを示すマクロを定義するC / C ++用のフレームワーク/ SDKを見てきました。それがあなたの例で起こっていることだと思います。

たとえば、Windows DDKは IN OUT および INOUT についてこれを行います(覚えている場合)。これらのマクロをコンパイルしても何も定義されていない場合、他のツール(IDLコンパイラや静的分析ツールなど)に役立つものに定義される可能性があります。最近のDDKでこれらのマクロがまだ使用されているかどうかはわかりません。

Microsoftは、SALマクロを使用してこの考えを極限まで高め、パラメーターにどのような動作が期待されるかを非常に細かく制御できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top