如何解决错误:在Mac上标记“(”之前缺少二进制运算符?

时间:2019-04-08 10:21:19

标签: python c++ c macos gcc

我目前正在尝试在Mac上的virtualenv中安装PySift。但是,Zstandard库在安装时会导致错误。

In file included from /usr/include/Availability.h:236:0,
                     from /usr/include/stdlib.h:61,
                     from zstd/lib/compress/fse_compress.c:38:
    /usr/include/AvailabilityInternal.h:33:18: error: missing binary operator before token "("
     #if __has_include(<AvailabilityInternalPrivate.h>)
                      ^
    In file included from /usr/include/stdlib.h:61:0,
                     from zstd/lib/compress/fse_compress.c:38:
    /usr/include/Availability.h:497:18: error: missing binary operator before token "("
     #if __has_include(<AvailabilityProhibitedInternal.h>)
                      ^
    error: command 'gcc' failed with exit status 1

我在StackOverflow上看到的大多数解决方案通常都建议运行xcode-select --install,但没有用。或者,this post建议使用以下命令

open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg

该命令将打开一个窗口,可让您安装缺少的MacOS SDK。但是,它仍然没有起作用。在那之后,我意识到我还没有将Xcode更新到最新版本。但是即使更新后,该错误仍然会出现。最后,我尝试使用brew,就像在this post中一样,并进行了一些更新,以防万一某些损坏的软件阻止安装完成。

最后,它仍然起作用。我想知道是否有人可以指出导致错误的我所缺少的东西?多谢

编辑:

我检查了this post,但没有找到答案,因为我专门试图找出为什么__has_include之前的(导致错误。

1 个答案:

答案 0 :(得分:1)

您从预处理器中收到语法错误,因为b / c无法将__has_include识别为类似于函数的有效宏。那是因为它是c ++ 17特定的指令。

您可以通过从文件中删除该行(和匹配的#endif)来解决。如果您收到有关缺少的包含内容的编译器错误,也请删除#include行。