在编译时创建一个标识符,其中包含行号

ARV*_*ARV 0 c++ c-preprocessor

我想要一个 C++ 预处理器宏,它创建一个新的标识符,其中包含行号。这是为了将标识符用作不与任何其他变量名称冲突的一次性变量。例如,如果我写

VARNAME("Var")
Run Code Online (Sandbox Code Playgroud)

在文件的第 100 行,我希望预处理器生成变量名:

Var100
Run Code Online (Sandbox Code Playgroud)

请问我该怎么做?我知道我必须使用字符串化和__LINE__预定义的宏,但我无法弄清楚如何将它们组合在一起。

Jar*_*d42 5

您可以使用以下内容:

#define CAT_(a, b) a ## b
#define CAT(a, b) CAT_(a, b)
#define VARNAME(Var) CAT(Var, __LINE__)
Run Code Online (Sandbox Code Playgroud)

演示