如果我构建并运行一个项目,基本上是由Mac OS 10.6上的Qt框架生成的存根,我得到这个错误输出:
/Users/home/Qt5.0.1/5.0.1/clang_64/include/QtCore/qisenum.h:53: Error:token is not a valid binary operator in a preprocessor subexpression
# if __has_extension(is_enum)
~~~~~~~~~~~~~~~^
我找不到解决方案,但我读到其他Mac用户似乎也有同样的问题。谁知道如何解决这个问题?
答案 0 :(得分:1)
this forum post已解决此问题。
这基本上是你的clang版本的问题
答案 1 :(得分:1)
我找到了解决方案。只需复制最新的qisenum.h文件from here并将其替换为clang_64/include/QtCore
创建者安装中的Qt
文件夹,它就可以正常工作。
答案 2 :(得分:1)
# if __has_extension(is_enum) ~~~~~~~~~~~~~~~^
这是一个名为language extension的Clang feature checking macros。对于Clang来说,他们已经有很长一段时间了。 GCC从GCC 5.0,IIRC开始提供它们。
__has_extension
可以作为预处理器宏进行测试。因此,首先测试宏的存在,然后测试该功能:
#if defined(__has_extension)
# if __has_extension(is_enum)
...
# endif
#endif
__has_extension(is_enum)
必须在单独的一行。
它也适用于包含文件。从Crypto ++项目rdrand.cpp file:
# include <immintrin.h> // rdrand, MSC, ICC, and GCC
# if defined(__has_include)
# if __has_include(<x86intrin.h>)
# include <x86intrin.h> // rdseed for some compilers, like GCC
# endif
# endif
答案 3 :(得分:1)
在我的情况下,同样错误的原因是Target Build Settings中的预处理器宏名称包含连字符' - ',类似于TEST-DEBUG = 1。
Xcode build configuration names with hyphens ('-') cause pods build failures