这个语言标记/关键字/东西是什么意思?

时间:2009-10-21 17:30:38

标签: programming-languages language-features

在以下网址中:https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsICacheVisitor是以下代码块:

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

我以为我正在处理c ++,但根据我查找的c ++关键字列表,“in”不是c ++关键字,也不是java关键字。那是什么意思呢?这是什么意思?

3 个答案:

答案 0 :(得分:4)

这意味着该参数是一个输入参数,意味着它将被使用但不被该函数修改。

in参数相反的是out参数,这意味着该参数将被修改,但不会显式返回。如果您在使用它的方法之后使用out参数,则该值将(可能)不同。

正如nos在评论中指出的那样,您链接的页面正在描述.idl或接口定义语言文件。我不熟悉Mozilla使用的IDL(但是如果你想了解更多,你是can read about it here),但我对Object Management Group的IDL有些熟悉,它说in参数是按值调用,out参数是按结果调用的,inout参数是按值/结果调用。

答案 1 :(得分:3)

该语言是Mozilla的界面描述语言(XPIDL)。 关键字“in”在此处描述:here

答案 2 :(得分:0)

我见过用于C / C ++的框架/ SDK,用于定义宏以指示参数是用于输入,输出还是两者。我猜这就是你的例子中发生的事情。

例如,Windows DDK为IN OUTINOUT执行此操作(如果我没记错的话)。当编译这些宏被定义为空时,它们有可能被定义为对其他工具(如IDL编译器或静态分析工具)有用的东西。我不确定他们是否仍然在最近的DDK中使用这些宏。

微软已经通过SAL宏将这个想法发挥到了极致,它可以对参数的预期行为进行非常精细的控制。