使用FreeTDS库将c ++连接到MSSQL,并在编译时收到以下错误。
在pa_main.cpp中包含的文件中:16:0: /usr/local/include/sybdb.h:120:13:错误:冲突声明'typedef int RETCODE' typedef int RETCODE;
在/usr/include/sql.h:19:0中包含的文件中, 来自pa_sql_db.h:16, 来自pa_main.cpp:11: /usr/include/sqltypes.h:268:33:注意:以前的声明为'typedef short int RETCODE' typedef签名短RETCODE;
我所理解的是unixodbc和freeTDS库对于不同大小的int使用相同的定义名称RETCODE。
我怎样才能避免这种情况?任何人都可以为此问题建议解决方法吗?
答案 0 :(得分:2)
您正在处理与C具有向后兼容性的两个库.C没有名称空间,因此它们用typedef
污染全局名称空间。我建议将每个库的代码保存在单独的翻译单元中。