为什么OCIDateTimeGetTime将非常量OCIDateTime *作为参数?

时间:2018-10-31 14:24:11

标签: c oracle const oci const-pointer

我正在使用函数OCIDateTimeGetTimeOCIDateTimeGetDate从不透明数据结构OCIDateTime的实例中获取信息。这两个函数都将OCIDateTime*作为参数,以及一些写入数据的out参数。在OCIDateTimeGetDate的文档中,我们可以看到此OCIDateTime*const

Syntax of OCIDateTimeGetDate

这是有道理的,因为它只是从中读取而不是更改它。但是,在类似的OCIDateTimeGetTime的文档中,它不是const

Syntax of OCIDateTimeGetTime

文档中也没有提及任何区别。这是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不会被修改?

0 个答案:

没有答案