Почему OCIDateTimeGetTime принимает неконстантный OCIDateTime * в качестве параметра? - PullRequest
0 голосов
/ 31 октября 2018

Я использую функции OCIDateTimeGetTime и OCIDateTimeGetDate , чтобы получить информацию из экземпляра OCIDateTime, непрозрачной структуры данных. Обе функции принимают OCIDateTime* в качестве параметра, а также некоторые параметры, в которые записываются данные. В документации OCIDateTimeGetDate мы можем видеть, что это OCIDateTime* равно const:

Syntax of OCIDateTimeGetDate

Что имеет смысл, поскольку он просто читает из него, а не меняет его. Однако в документации аналогичного OCIDateTimeGetTime это не const:

Syntax of OCIDateTimeGetTime

В документации также не упоминается никаких отличий. Это его запись для параметра 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 не будет изменен?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...