<分区>
考虑以下代码:
struct S {};
#define CREATE_INSTANCE S instance_##__LINE__
int main()
{
CREATE_INSTANCE;
CREATE_INSTANCE;
return 0;
}
我想要它做的是创建两个名为 instance_7
和 instance_8
的 S
实例。它实际上做的是创建 instance___LINE__
两次。
如何实现我想要的?
标签 c++
<分区>
考虑以下代码:
struct S {};
#define CREATE_INSTANCE S instance_##__LINE__
int main()
{
CREATE_INSTANCE;
CREATE_INSTANCE;
return 0;
}
我想要它做的是创建两个名为 instance_7
和 instance_8
的 S
实例。它实际上做的是创建 instance___LINE__
两次。
如何实现我想要的?
最佳答案
使用一些间接的:
#define Concat_(a, b) a ## b
#define Concat(a, b) Concat_(a, b)
#define CREATE_INSTANCE S Concat(instance_, __LINE__)
关于c++ - 使用宏扩展作为标识符的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45989446/