【发布时间】:2018-10-30 02:50:53
【问题描述】:
我有以下预处理器的代码:
#define MYFUNC(void) getFunc(void)
这在 C 中合法吗?
【问题讨论】:
标签: c c-preprocessor
我有以下预处理器的代码:
#define MYFUNC(void) getFunc(void)
这在 C 中合法吗?
【问题讨论】:
标签: c c-preprocessor
是的,它是合法的,但它可能不符合您的预期。
#define MYFUNC(void) getFunc(void)
这定义了一个名为MYFUNC 的宏,它接受一个参数,在本例中,您称之为void。此宏调用您的函数getFunc,参数与传递给它的参数相同。
在这种情况下调用
MYFUNC( "Hello" );
结果与
相同getFunc( "Hello" );
目前尚不清楚这是否是您所期望的。使用参数名称将是一个糟糕的选择,因为它会让任何读者感到困惑。虽然void 是 C 中的关键字,但在 C 预处理器中并没有什么特别之处。
【讨论】: