Я использую функции OCIDateTimeGetTime и OCIDateTimeGetDate , чтобы получить информацию из экземпляра OCIDateTime
, непрозрачной структуры данных. Обе функции принимают OCIDateTime*
в качестве параметра, а также некоторые параметры, в которые записываются данные. В документации OCIDateTimeGetDate
мы можем видеть, что это OCIDateTime*
равно const
:
![Syntax of OCIDateTimeGetDate](https://i.stack.imgur.com/lCBN3.png)
Что имеет смысл, поскольку он просто читает из него, а не меняет его. Однако в документации аналогичного OCIDateTimeGetTime
это не const
:
![Syntax of OCIDateTimeGetTime](https://i.stack.imgur.com/YeFuu.png)
В документации также не упоминается никаких отличий. Это его запись для параметра 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
не будет изменен?