使用FreeTDS库时发生冲突声明'typedef int RETCODE'错误

时间:2016-02-05 06:00:37

标签: c++ freetds unixodbc

使用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。

我怎样才能避免这种情况?任何人都可以为此问题建议解决方法吗?

1 个答案:

答案 0 :(得分:2)

您正在处理与C具有向后兼容性的两个库.C没有名称空间,因此它们用typedef污染全局名称空间。我建议将每个库的代码保存在单独的翻译单元中。