【问题标题】:macro collisions in third party libraries第三方库中的宏冲突
【发布时间】:2020-04-22 10:02:13
【问题描述】:

我正在使用 yojimbo - 一个网络库和 spdlog - 一个我正在开发的游戏的日志库。当我尝试用 yojimbo 和 spdlog 的头文件编译源文件时,我得到了宏冲突,导致 g++ 给出了很多错误。

带有任何一个头文件但不能同时编译的源文件。

有没有办法避免这些第三方库中的宏冲突?

【问题讨论】:

  • 除非库有解决这个问题的方法(一个配置标志来定义所有带有库前缀的宏,或者类似的东西),你应该抱怨两个库的错误跟踪器。
  • 请分享编译器错误 - 哪些宏等..

标签: c++ macros


【解决方案1】:

有没有办法避免这些第三方库中的宏冲突?

是的。最简单的解决方案是不将定义冲突宏的两个标头都包含到同一翻译单元中。如果这还不够,那么一个可能的解决方案是在包含第一个宏之后取消定义冲突宏。如果你需要这两个宏,那么你可以在未定义后用另一个名字重写它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    相关资源
    最近更新 更多