ODBC API 签名中参数的__IN__和__OUT__限定符的重要性

Significance of __IN__ and __OUT__ qualifiers for parameters in ODBC API's Signature

本文关键字:OUT 重要性 ODBC 参数 API IN      更新时间:2023-10-16

通过ODBC头文件sql.h的Microsoft实现,几乎所有API声明的参数都是用__IN____OUT__限定的。

示例

SQLRETURN  SQL_API SQLRowCount(_In_ SQLHSTMT StatementHandle,
                               _Out_ SQLLEN* RowCount);

据我所知,这种用法通常用于确定传输优化的方向,特别是在COM世界中,数据需要进行封送和联合封送,但在ODBC上下文中,这种用法似乎很奇怪。

从ODBC的角度来看,这些限定符的意义是什么?

语法上,可能根本没有意义。他们可能都是#define,在某个地方什么都不是。它们只是为了帮助API在与文档隔离的情况下更具可读性——只需标记哪些参数是函数的输入,哪些参数是输出。