使用 FreeTDS 库时出现冲突声明“typedef int RETCODE”错误
Conflicting declaration ‘typedef int RETCODE’ error when using FreeTDS libraries
我正在使用 FreeTDS 库将 C++ 连接到 MSSQL,但在编译时出现以下错误。
In file included from pa_main.cpp:16:0:
/usr/local/include/sybdb.h:120:13: error: conflicting declaration ‘typedef int RETCODE’
typedef int RETCODE;
In file included from /usr/include/sql.h:19:0,
from pa_sql_db.h:16,
from pa_main.cpp:11:
/usr/include/sqltypes.h:268:33: note: previous declaration as ‘typedef short int RETCODE’
typedef signed short RETCODE;
我的理解是 unixodbc 和 freeTDS 库对不同大小的 int 使用相同的定义名称 RETCODE。
我怎样才能避免这种情况?任何人都可以针对此问题提出解决方法吗?
您正在处理两个向后兼容 C 的库。C 没有名称空间,因此它们的 typedef
污染了全局名称空间。我建议将每个库的代码保存在单独的翻译单元中。
我正在使用 FreeTDS 库将 C++ 连接到 MSSQL,但在编译时出现以下错误。
In file included from pa_main.cpp:16:0: /usr/local/include/sybdb.h:120:13: error: conflicting declaration ‘typedef int RETCODE’ typedef int RETCODE;
In file included from /usr/include/sql.h:19:0, from pa_sql_db.h:16, from pa_main.cpp:11: /usr/include/sqltypes.h:268:33: note: previous declaration as ‘typedef short int RETCODE’ typedef signed short RETCODE;
我的理解是 unixodbc 和 freeTDS 库对不同大小的 int 使用相同的定义名称 RETCODE。
我怎样才能避免这种情况?任何人都可以针对此问题提出解决方法吗?
您正在处理两个向后兼容 C 的库。C 没有名称空间,因此它们的 typedef
污染了全局名称空间。我建议将每个库的代码保存在单独的翻译单元中。