首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tcl-8.5.12中定义的宏与qt-4.7.4中的方法冲突

tcl-8.5.12中定义的宏与qt-4.7.4中的方法冲突
EN

Stack Overflow用户
提问于 2013-07-17 20:41:53
回答 2查看 93关注 0票数 0

我正在将我们的产品从tcl-8.4移植到tcl-8.5.12

在新版本的tcl中,tclInt.h中定义了一个宏

代码语言:javascript
复制
#define localName(framePtr, i) \
    ((&((framePtr)->localCachePtr->varName0))[(i)])

另外,我的产品使用Qt-4.7.4。在qt-4.7.4/include/QtXml/qdom.h中有一个属性

代码语言:javascript
复制
QString localName() const;

结果我得到了错误: qt-4.7.4/include/QtXml/qdom.h:165:23: error:宏"localName“需要2个参数,但只给出了1个

有什么建议来解决这个纠缠吗?

在tcl中取消定义宏。我将看看会发生什么,尽管,即使它修复了这种情况,我也不太喜欢这个解决方案。

提前感谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-17 20:56:22

在qt/c++代码中使用内联函数定义会有帮助吗?

代码语言:javascript
复制
inline vartype localName(int* framePtr, int i){
  return framePtr->localCachePtr->varName0.at(i);
}

由于有可能有更多同名不同参数(Count)的函数,这应该调用正确的函数,并且是内联的,它将在编译时被替换。

编辑: Mhh,我刚刚看到你的问题可能是相反的?你不能编译,因为localName(某物)总是调用宏。您肯定会删除宏,但使用它作为内联函数调用将有望解决问题。

票数 0
EN

Stack Overflow用户

发布于 2013-07-17 21:42:36

这里通常的解决方案是为tcl类创建一个包装类。唯一包含的tcl头将在包装器类的实现中,而不包含来自Qt的任何内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17700050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档