【发布时间】:2025-05-15 01:05:02
【问题描述】:
C中,下划线作为宏参数是什么意思?
#define FUNC(_) VALUE
这是一个虚拟参数吗?有适合的用例示例吗?
【问题讨论】:
-
是的,如果不使用它是一个虚拟参数,但名称没有什么特别之处。它可能被称为
x或foo或其他任何名称。
标签: c macros c-preprocessor
C中,下划线作为宏参数是什么意思?
#define FUNC(_) VALUE
这是一个虚拟参数吗?有适合的用例示例吗?
【问题讨论】:
x 或foo 或其他任何名称。
标签: c macros c-preprocessor
_ 没有特殊含义,我想他们之所以使用它是因为它看起来好像参数不存在。
_ 只是一个有效的标识符,因此它被采用,因此宏需要一个参数,但它使宏定义看起来好像没有参数。
#define FUNC(ignoredParameter) VALUE
完全一样。
【讨论】:
在这种情况下,代码可以读作:
FUNC接受一个参数,但它并不关心它是什么。不管传入什么,VALUE都是结果。
单个_ 是C 中的有效标识符,因此适合用作宏参数名称。
【讨论】:
_ 是一个有效的标识符,如果程序员选择这样做,它可以在宏体内使用。然而,这是一个糟糕的选择,因为它会损害可读性。
_ 是一个有效的标识符。没有约定将其用作不需要的参数。我对此的解释是基于替换文本VALUE 不以任何方式使用_。