是ODBC #define“ ODBCVER”标准的版本信息吗?

问题描述 投票:0回答:1

[试图编写通用代码以针对多个版本的ODBC标头进行编译时,我很好奇SQL_PARAM_OUTPUT_STREAM是否可用。例如一个人可以写:

SQL_PARAM_OUTPUT_STREAM

看着#include <sql.h> #include <sqlext.h> #if ODBCVER >= 0x380 // e.g. ODBC version is > 3.8 // SQL_PARAM_OUTPUT_STREAM is available ... #endif ,我看到它说:

unixodbc sql.h

(我认为注释已过期(?),似乎0x0380表示3.8)

因此,这种定义形式使您可以在包含 /**************************** * default to 3.51 declare something else before here and you get a whole new ball of wax ***************************/ #ifndef ODBCVER #define ODBCVER 0x0380 #endif 之前对#define进行自己的ODBCVER处理,并可能对其进行“降级”以仅支持较旧的标准进行编译。如果不这样做,它将是标题可以支持的最高版本。

...但是我在Microsoft文档中找不到有关<sql.h>的任何信息。实际上没有标准的方法可以感知要针对其进行编译的头文件中的定义吗?像ODBCVER这样的东西作为#ifdef SQL_PARAM_OUTPUT_STREAM上的“特征检测”形式会更好吗?

c odbc unixodbc
1个回答
1
投票

sql.h可能未出现在文档中,但绝对受支持。它通过Windows SDK一部分的ODBC标头显示。

例如,当前系统上位于ODBCVER的最新SDK以及同一目录引用C:\Program Files (x86)\Windows Kits\10\Include\10.0.18362.0\um\sql.h中的其他7个文件。

© www.soinside.com 2019 - 2024. All rights reserved.