为什么Windows ODBC API将输入参数视为非const?

时间:2014-06-09 07:09:48

标签: c winapi odbc

Windows ODBC API将所有字符串参数都视为SQLCHAR *,即使它们被记录为输入参数也是如此。例如,函数SQLConnect的声明是:

SQLRETURN SQLConnect(
SQLHDBC        ConnectionHandle,
 SQLCHAR *      ServerName,
 SQLSMALLINT    NameLength1,
 SQLCHAR *      UserName,
 SQLSMALLINT    NameLength2,
 SQLCHAR *      Authentication,
 SQLSMALLINT    NameLength3);

似乎并不是一个明显的原因,为什么需要对数据进行非常量访问,而API引用明确说明这些是输入参数。

决定不将字符串输入参数作为const的原因可能是什么原因?

2 个答案:

答案 0 :(得分:0)

平原历史。所有这些标题都是15岁以上,也许是20岁。我不确定今天更新它们是否有意义。

答案 1 :(得分:0)

why non-const access to the data would be needed

系统操纵原始参数以进行内部处理。因此它不应该是只读参数。

来自link If the data source name cannot be found or ServerName is a null pointer, the Driver Manager locates the default data source specification and connects to the associated driver. The Driver Manager passes to the driver the UserName and Authentication arguments unmodified, and "DEFAULT" for the ServerName argument. 显然它似乎操纵了输入参数。