c ++ #define和concatenate case(我正在使用gcc)

And*_*ind 2 c c++ gcc

我有

#define NAME(value) my ## value ## value
Run Code Online (Sandbox Code Playgroud)

当我这样做的NAME(1)时候my1value,这是好的!

但是我想把变量传递给NAME(),比如

for(int i=0;i<10;i++)
{
    NAME(i);
    ...
}
Run Code Online (Sandbox Code Playgroud)

但不幸的是,它变成了myivalue,但我想my0value,my1value等等.

我应该改变什么?谢谢

And*_*owl 6

宏在编译时被替换(实际上,即使在"真正的"编译开始之前它们也被预处理器替换),并且它是纯文本处理.

您不能指望您的宏根据变量的值计算其扩展.