2

如果我构建并运行一个项目,基本上是由 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 用户似乎也有同样的问题。任何人都知道如何解决这个问题?

4

4 回答 4

1

我找到了解决方案。只需从此处复制最新的 qisenum.h 文件并将其替换到您的创建者安装的clang_64/include/QtCore文件夹中,它就可以正常工作。Qt

于 2013-02-28T14:24:59.860 回答
1

此问题已在此论坛帖子中解决。

这基本上是您的clang版本的问题

于 2013-02-27T16:37:44.103 回答
1
#    if __has_extension(is_enum)
         ~~~~~~~~~~~~~~~^

那是一个叫做特性检查宏的 Clang语言扩展。对于 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 文件

# 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
于 2015-11-26T01:14:13.100 回答
1

在我的情况下,相同错误的原因是目标构建设置中的预处理器宏名称包含连字符“-”,类似于 TEST-DEBUG=1。

带有连字符 ('-') 的 Xcode 构建配置名称会导致 pod 构建失败

于 2016-03-22T16:40:29.163 回答