You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

__has_include正确用法及X11库动态包含失效问题求助

__has_include正确用法及X11库动态包含失效问题求助

大家好,我最近在尝试实现一个功能:根据系统是否存在X11库,动态引入对应的头文件并启用相关逻辑,写了如下代码:

#if __has_include(<X11/Xlib.h>)
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/X.h>
#define X11_SUPPORT 1
#endif

#ifdef X11_SUPPORT
<Code for x11 support>
#else
<Code for no x11 support>
#endif

但现在遇到了一个奇怪的问题:明明运行环境里肯定存在X11库,可编译运行程序后,执行的却是无X11支持的代码分支,而且IDE还把那段头文件引入的代码标记为无效状态。不过如果我直接去掉条件判断,正常引入X11库的话,所有功能都能正常工作。

我已经确认__has_include(<X11/Xlib.h>)的判断结果是true,我的开发环境如下:

  • Qt 5.12.8
  • GCC 9
  • C++17标准

有没有大佬能帮我分析下问题出在哪?非常感谢!

备注:内容来源于stack exchange,提问作者OneFatGuy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 10:57:44