gpt4 book ai didi

c++ - Qt 名称冲突,但 no_keywords 不是一个选项

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:20:44 25 4
gpt4 key购买 nike

我有一个难题。在我使用 Qt 编写的程序中,我使用了一个(非 Qt)库,该库在其 header 中使用 Qt 关键字作为名称(准确地说,该库是 pf_ring,名称是“slots”),所以我得到编译错误。但是,如果我使用 no_keywords 选项关闭 Qt 关键字,编译器会提示另一个库的头文件(这个基于 Qt 的)使用 Qt 关键字,如“信号”和“槽”。

那么我该如何解决这个问题呢?我只能想到两个选项,但都不太令人满意:

  1. 我可以更改第二个库的头文件,使它们符合 no_keywords 模式(将“slots”更改为“Q_SLOTS”等)。

  2. 我可以将与 pf_ring 相关的代码移动到它自己的子项目中,在其中我可以关闭 Qt 关键字或者根本不使用 Qt。

您能否提出另一个更优雅且麻烦更少的解决方案?

最佳答案

这取决于库,如果它很小,你可以制作一个不暴露slots的“包装器”头文件(无论是否)或将其暴露在 wrapper_namespace 中(注意你可以使用 #undef slots )。

关于c++ - Qt 名称冲突,但 no_keywords 不是一个选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16638077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com