gpt4 book ai didi

gcc - 编译器错误 "missing binary operator before token"是什么意思?

转载 作者:行者123 更新时间:2023-12-01 23:58:06 26 4
gpt4 key购买 nike

我最近在尝试使用 gcc 编译时遇到以下错误:

error: missing binary operator before token "("

Web 和 SO 搜索提出了此错误的几个具体示例,并通过特定的代码更改来修复它们。但我没有找到关于什么条件导致发出此错误的一般描述。

gcc 何时以及为何发出此错误?

最佳答案

这不是编译器错误,而是预处理器错误。当预处理器在尝试计算 #if#elif 指令中的表达式时遇到无效语法时,就会发生这种情况。

一个常见原因是 #if 指令中的 sizeof 运算符:

例如:

  #define NBITS (sizeof(TYPE)*8)
//later
#if (NBITS>16) //ERROR

这是一个错误,因为 sizeof is evaluated by the compiler, not the preprocesor

类型转换也不是有效的预处理器语法:

  #define ALLBITS ((unsigned int) -1)
//later
#if (ALLBITS>0xFFFF) //ERROR

rules for what can be in a valid expression are here .

另请注意,#if 会将未定义的宏计算为 0,除非它看起来需要参数,在这种情况下,您 also get this error :

因此,如果 THIS 未定义:

#if THIS == 0  //valid, true

#if THIS > 0 //valid, false

#if THIS() == 0 //invalid. ERROR

Typos in your #if statement也可能导致此消息。

关于gcc - 编译器错误 "missing binary operator before token"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21338385/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com