即使已声明,也未声明宏标识符

问题描述 投票:0回答:1

当我尝试编译C项目时出现此错误。

error #20: identifier "someGetFunctionMacro" is undefined

这出现在我在代码中使用someGetFunctionMacroB()的行。

variable = someGetFunctionMacroB();

但是这里是someGetFunctionMacroB()的抽象内容。

#define someGetFunctionMacro()      someGetFunction(param1)

#define someGetFunctionMacroA()     (someGetFunctionMacro == returnval1 ||\
                                     someGetFunctionMacro == returnval2 ||\
                                     someGetFunctionMacro == returnval3)


#define someGetFunctionMacroB()     someGetFunctionMacroC() && (someGetFunctionMacroA() == 1)

我不明白为什么清楚地定义了标识符someGetFunctionMacro后会出现错误。

c macros c-preprocessor
1个回答
3
投票

类似于函数的宏必须与带有括号和所有字符的函数一起使用。

因此,如果您有类似的宏

#define someGetFunctionMacro()      someGetFunction(param1)

必须像带括号的函数一样“调用”它。

someGetFunctionMacroA宏定义中,您没有正确使用someGetFunctionMacro

© www.soinside.com 2019 - 2024. All rights reserved.