Возвращаемые значения против результатов функций
Несколько ObjectARX глобальные функции имеют пустой тип возвращения, и некоторые непосредственно возвращают их результатов, но больше всего имеют int, напечатают и возвращают целочисленный код состояния, который указывает, потерпел ли функциональный запрос, за которым следуют или неудачу.
Код RTNORM указывает, что функция преуспела; другие коды указывают неудачу или специальные условия. Библиотечные функции, которые возвращают код состояния, передают их фактических результатов (если любой) поддерживает к вызывающей программе через параметр, который пропускает ссылка.
ПРИМЕЧАНИЕ Не путает параметры результата библиотечной функции и значения с его возвращаемым значением. Функция возвращает целочисленный код состояния. Это размещает его результатов в параметры, прошел (ссылкой) назад к функции, которая вызывает это.
Рассмотрите следующие смоделированные объявления для нескольких типичных функций ObjectARX:
int acdbEntNext(ads_name ent, ads_name result);
int acedOsnap(ads_point pt, char *mode, ads_point result);
int acedGetInt(char *prompt, int *result);
Приложение могло вызывать эти функции со следующими инструкциями C++:
stat = acdbEntNext(ent, entres);
stat = acedOsnap(pt, mode, ptres);
stat = acedGetInt(prompt, &intres);
После того, как каждая функция вызвана, значение stat переменной указывает или успех (stat == RTNORM) или неудачу (stat == RTERROR или другой код ошибки, типа RTCAN для отмены). Последний параметр в каждом списке - параметр результата, который нужно пропустить ссылкой. Если успешно, acdbEntNext() возвращает имя примитива в его entres параметре, acedOsnap() возвращает точку в ptres, и acedGetInt() возвращается, целое число приводит к intres. (Типы ads_name и ads_point - типы массива, который является, почему entres и ptres параметры явно не появляются как указатели.)
ОБРАТИТЕ ВНИМАНИЕ В ObjectARX глобальных функциональных объявлениях параметры результата всегда следуют за параметрами, которые передают входные значения к функции.