【问题标题】:Is legal to have a an argument void in Macro functions?宏函数中的参数无效是否合法?
【发布时间】:2018-10-30 02:50:53
【问题描述】:

我有以下预处理器的代码:

#define MYFUNC(void)  getFunc(void)

这在 C 中合法吗?

【问题讨论】:

    标签: c c-preprocessor


    【解决方案1】:

    是的,它是合法的,但它可能不符合您的预期。

    #define MYFUNC(void) getFunc(void)

    这定义了一个名为MYFUNC 的宏,它接受一个参数,在本例中,您称之为void。此宏调用您的函数getFunc,参数与传递给它的参数相同。

    在这种情况下调用

    MYFUNC( "Hello" );

    结果与

    相同

    getFunc( "Hello" );

    目前尚不清楚这是否是您所期望的。使用参数名称将是一个糟糕的选择,因为它会让任何读者感到困惑。虽然void 是 C 中的关键字,但在 C 预处理器中并没有什么特别之处。

    【讨论】:

      猜你喜欢
      • 2011-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-28
      • 2016-06-13
      • 2019-08-20
      • 1970-01-01
      • 2018-09-05
      相关资源
      最近更新 更多