Почему OCIDateTimeGetTime принимает неконстантный OCIDateTime* в качестве параметра?
Я использую функции OCIDateTimeGetTime и OCIDateTimeGetDate, чтобы получить информацию из экземпляра OCIDateTime
непрозрачная структура данных. Обе функции принимают OCIDateTime*
в качестве параметра, а также некоторые параметры, куда записываются данные. В документации OCIDateTimeGetDate
мы можем видеть, что это OCIDateTime*
является const
:
Что имеет смысл, так как это просто чтение из него, а не его изменение. Однако в документации аналогичного OCIDateTimeGetTime
это не const
:
Документация также не упоминает никакой разницы. Это его запись для datetime
параметр:
datetime (IN)
Указатель на дескриптор OCIDateTime, из которого будет извлекаться информация о времени.
С "дата" вместо "время" для OCIDateTimeGetDate
,
Это также не похоже на ошибку с документацией: в ociap.h можно найти следующие прототипы:
/*----------------- Extensions to Datetime interfaces -----------------------*/
/*--------------------- Actual Prototypes -----------------------------------*/
sword OCIDateTimeGetTime(void *hndl, OCIError *err, OCIDateTime *datetime,
ub1 *hr, ub1 *mm, ub1 *ss, ub4 *fsec);
sword OCIDateTimeGetDate(void *hndl, OCIError *err, const OCIDateTime *date,
sb2 *yr, ub1 *mnth, ub1 *dy );
Почему это так? Есть ли OCIDateTimeGetTime
содержать любые недокументированные функции, которые могут изменить OCIDateTime
что прошло? Или это ошибка, и я могу предположить, что OCIDateTime
не будет изменен?