Что означает этот языковой токен / ключевое слово / вещь? - PullRequest
0 голосов
/ 21 октября 2009

По следующему URL: https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsICacheVisitor - следующий фрагмент кода:

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

Я думал, что имею дело с c ++, но "in" не является ключевым словом c ++ в соответствии со списками ключевых слов c ++, которые я посмотрел, и не является ключевым словом java. Так для чего это и что это значит?

Ответы [ 3 ]

4 голосов
/ 21 октября 2009

Это означает, что параметр является входным параметром, то есть он будет использоваться, но не изменяться функцией.

Противоположностью параметра in является параметр out, что означает, что параметр будет изменен, но явно не возвращен. Если вы будете использовать параметр out после метода, который его использует, значение будет (потенциально) другим.

Как указывает nos в комментарии, на странице, на которую вы ссылаетесь, описывается файл .idl или язык определения интерфейса. Я не знаком с IDL, который использует Mozilla (но если вы хотите узнать больше, вы можете прочитать об этом здесь ), но я немного знаком с IDL группы управления объектами, которая говорит, что in параметры являются вызовом по значению, out параметры являются вызовом по результату, а inout параметры являются вызовом по значению / результату.

3 голосов
/ 21 октября 2009

Язык - это язык описания интерфейса Mozilla (XPIDL). Ключевое слово "in" описано здесь: здесь

0 голосов
/ 21 октября 2009

Я видел фреймворки / SDK для C / C ++, которые определяют макросы, чтобы указать, является ли параметр для ввода, вывода или для обоих. Я предполагаю, что это то, что происходит в вашем примере.

Например, Windows DDK делает это для IN OUT и INOUT (если я правильно помню). Когда компиляция этих макросов не определена, они могут быть определены как что-то полезное для других инструментов (таких как компилятор IDL или инструмент статического анализа). Я не уверен, что они по-прежнему используют эти макросы в более поздних версиях DDK.

Microsoft довела эту идею до крайности с помощью макросов SAL, которые дают очень хороший уровень контроля над поведением, ожидаемым для параметра.

...