第三方库中的宏冲突

macro collisions in third party libraries

我正在使用 yojimbo - a networking library and spdlog - 我正在开发的游戏的日志库。当我尝试使用 yojimbo 和 spdlog 的 headers 编译源文件时,我遇到宏冲突,导致 g++ 给出的许多错误。

具有 headers 之一但不能同时编译的源文件。

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

Is there a way to avoid macro collision in these third party libraries?

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