この言語トークン/キーワード/ものはどういう意味ですか?
-
05-07-2019 - |
質問
次の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マクロを使用してこの考えを極限まで高め、パラメーターにどのような動作が期待されるかを非常に細かく制御できます。