__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
相关产品推荐
相关产品推荐

