【问题标题】:Conflicting declaration ‘typedef int RETCODE’ error when using FreeTDS libraries使用 FreeTDS 库时出现冲突声明“typedef int RETCODE”错误
【发布时间】:2016-02-05 14:12:18
【问题描述】:

我正在使用 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。

我怎样才能避免这种情况?任何人都可以为这个问题提出一个解决方法吗?

【问题讨论】:

  • 呃,听起来像是无命名空间冲突。祝你好运!

标签: c++ freetds unixodbc


【解决方案1】:

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

【讨论】:

  • 非常感谢您的建议。可以提供样品吗?
  • 您的建议对我很有帮助。我已将库分成两个翻译单元,现在它工作得很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多