【发布时间】:2013-01-18 04:44:10
【问题描述】:
我在我的项目中定义了list_t,它获得了list_pop() 之类的列表模块API。但是现在我必须使用 MySQL lib 与 DB 进行通信,但是 MySQL lib 仍然得到了它的 list implements,并且还定义了一个list_pop() API。在我的其他模块中,我必须将它们都链接起来,然后冲突就来了。
我的一个解决方案是,分别包含用于不同列表API调用的头文件,这很好用,但是虽然某些函数需要同时调用MySQL::list_pop()和local::list_pop(),如何通知编译器正确的链接点?是否有一些 GCC 技巧可以对local::list_pop() 进行任何更改?
【问题讨论】:
-
local::list_pop() 仅在您使用 c++ 更改标签时在 c++ 中有效。
-
是的,我知道,我只是借用了 C++ 语法,想让我的问题更生动。
-
您可以重命名您的 list_pop 或使用一些宏技巧。宏会让你的代码有点吓人,所以我就把它重命名为 tbh。
-
@JesusRamos: 改变我的列表实现是首选,但是有一些代码依赖它,而 MySQL::list 只在一个模块中使用,所以我不想要更改我的列表的命名。
-
另一种可能性:你能简单地在任何地方使用 MySQL 列表类型而不是你自己的吗?由于您正在使用 MySQL 进行构建,这可能是一种可能性——但可能并不实用。
标签: mysql c list gcc compiler-construction