我收到以下错误消息

error: '0' cannot be used as a function

尝试编译以下行时:
NOOP(0 != width);

NOOP定义如下:
#define NOOP (void)0

源代码是SDK的一部分-因此应该可以。而且我发现(void)0实际上是在C++中描述“无操作”的有效方法。但是,为什么要将 bool(boolean) 参数传递给什么都不做的函数呢?以及如何消除错误消息?

最佳答案

MACRO没有定义任何参数,因此在预处理器替换代码后,该语句最终如下所示:

(void)0(0 != width);

这使编译器认为您试图在0上使用“()”运算符(即使用0作为函数)感到困惑。

我建议您放下“(0!= width)”(这会引起误解),然后只写NOOP;

关于c++ - 将参数传递给C++中的无操作宏,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13242431/

10-12 05:54