|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.06.2022, 02:52 | #1 |
Пользователь
Регистрация: 14.08.2019
Сообщений: 65
|
Как происходит проверка параметров [IN], [OUT], [IN/OUT] ?
Не обязательно объяснять то, что именно настраивают параметры [IN], [OUT], [IN/OUT] - цель темы не в этом. В примере с IDL, откомпилированный код будет вызывать динамическую библиотеку и передавать в ее функцию параметры: в такую функцию как GetSeqAndTxViaExport (); . Эти параметры настраивают поведение данной функции. Так вот, нужно разобраться, библиотечная функция "GetSeqAndTxViaExport ();":
1. В собственной ли области исполнения она проверяет наличие этих параметров? 2. Проходит ли эта проверка на этапе исполнения (неужели на этапе компиляции...)? Привожу код просто чтобы был виден синтаксис. Код:
Дискриминация человека на основе его слабостей недостаточна — нужно невменяемо повторять это, получая каждый раз один и тот же результат.
|
06.06.2022, 08:45 | #2 |
фрилансер
Участник клуба
Регистрация: 11.10.2019
Сообщений: 1,010
|
GrimHex, какой язык ?
если речь про C/C++, то в их стандартах нет таких атрибутов, это, видимо, нестандартное расширение компилятора - просто подсказка для юзера, что вот тут входной, тут выходной, а тут в обе стороны. Также подсказка по размеру, смотрю, есть (на этапе компиляции может выскочить). В коде эта вся обвеска не участвует |
06.06.2022, 15:56 | #3 | |
Пользователь
Регистрация: 14.08.2019
Сообщений: 65
|
GrimHex,
C++ - не встречал раньше таких параметров. Привык к тому что Майкрософт издает документацию c кодом на C++, взял его отсюда [MS-COM]: Component Object Model Plus (COM+) Protocol Цитата:
Есть тема https://stackoverflow.com/questions/...with-them-in-c "IN/OUT Parameters and how to work with them in C++" "Эта часть применима ко всем типам параметров — большинство интерфейсов библиотек стараются быть совместимыми с C, поэтому чаще всего параметры передаются по указателю, а не по ссылке. IN: Когда параметр указан как IN, интерфейс предлагает гарантию, что он не изменит этот параметр. На мой взгляд, это лучше передать, пометив параметр как const, тогда сам язык предотвратит модификации значения. Если этот параметр передается по значению, не имеет значения, помечен ли он IN в документации (или const в прототипе), поскольку параметр в любом случае является локальным для функции. Но чтобы избежать копирования, его можно передать по ссылке или указателю, и в этом случае constключевое слово становится очень важным. OUT: Параметр, помеченный как OUT, обычно означает, что значение параметра при его передаче в функцию не имеет никакого значения. На самом деле, если он передается по указателю, может даже потребоваться, чтобы он был NULL, и функция выделит память и вернет вам значение. IN/OUT: Параметр IN/OUT обычно указывает на что-то, где и входные, и выходные значения имеют значение. Например, если у вас есть библиотечная функция, которая заполняет буфер, вам может потребоваться передать указатель на буфер вместе с другим указателем, указывающим длину буфера. Когда функция возвращается, второй указатель может содержать фактическое количество байтов, которые были записаны в буфер." Почему тогда пишут что это C++, если Вы говорите что нет таких атрибутов?
Дискриминация человека на основе его слабостей недостаточна — нужно невменяемо повторять это, получая каждый раз один и тот же результат.
|
|
06.06.2022, 19:24 | #5 | |
Пользователь
Регистрация: 14.08.2019
Сообщений: 65
|
Цитата:
Дальше смотрю описание функции из COM: CoGetInterceptor function (callobj.h) " https://docs.microsoft.com/ru-ru/win...getinterceptor " Код:
2. Для COM/DCOM ведь можно писать на C++ и без библиотечных определений?
Дискриминация человека на основе его слабостей недостаточна — нужно невменяемо повторять это, получая каждый раз один и тот же результат.
|
|
06.06.2022, 21:21 | #7 | |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,758
|
Конечно. MIDL делался для описания интерфейсов и это один из них. Тем более в доке полезно иметь описание "направлений" параметров.
Цитата:
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
в ввыводе же строки с 7 по 11 происходит проверка аналогичная предидущей но не одна из ch или bln2 не стоит | Ghelovek | Python | 6 | 21.08.2019 09:57 |
Подпрограммы (free Pascal): объяснить механизм передачи параметров и назвать правило соответствия формальных и фактических параметров | Jon_Morgan | Помощь студентам | 1 | 28.12.2016 08:38 |
Проверка параметров печати в FastReport | Wicort | Компоненты Delphi | 2 | 15.05.2015 13:32 |
Проверка объявления функции без параметров на С++ или С | Денис6954 | Фриланс | 1 | 28.09.2014 12:28 |
Организация программ с использованием процедур .использованием параметров-значений и параметров переменных | Фрейтор 40-500 | Помощь студентам | 6 | 02.11.2012 21:46 |