包含某个头文件会导致 SFML 出错

Including a certain header file causes errors from SFML

我正在尝试将 ChaiScript 与 SFML 一起用于我的游戏引擎。在我将 chaiscript.hpp 包含在我的游戏对象头文件中之前,所有 SFML 都可以正常工作。我的 GameObject 头文件看起来有点像这样:

#include <a bunch of standard libraries>
#include "imgui.h"

struct Object {
    std::string name;

    void init();
    void update();
    void render();

    *some template functions*
};

当我尝试在上述文件中包含 chaiscript.hpp 时出现问题。我从 SFML 的 Rect.inl 文件中得到一个重复错误(确切地说是 8 个错误):'(': illegal token on right side of '::',然后没有其他错误。当我不包含 chaiscript.hpp,或者当我在对象 cpp 文件中包含 chaiscript.hpp 时,它编译正常。我之前在 SDL 中使用过 ChaiScript,但从未遇到过这样的问题,所以它是 SFML 宏搞砸了吗?我怎样才能避免这个问题?

听起来好像是 ChaiScript 中的某些东西弄乱了 SFML 中的某些东西。颠倒包含它们的顺序可能会消除这些错误(在 ChaiScript 之前包含 SFML,反之亦然)。