[英]C preprocessor macro generation from another macro
I want to create a macro-list of macro from another macro-list of macro. 我想从另一个宏列表创建宏的宏列表。 I don't know how to describe this, so let me introduce an example :
我不知道如何描述,所以让我介绍一个例子:
#include <stdio.h>
#define MACRO_LIST_DEFAULT \
MACRO(TEST1, TEST2) \
MACRO(TEST3, TEST4)
#define MACRO_LIST_MODIFIED \
MACRO(TEST1_MODIFIED, TEST2_MODIFIED) \
MACRO(TEST3_MODIFIED, TEST4_MODIFIED)
#define MACRO_LIST_FULL \
MACRO_LIST_DEFAULT \
MACRO_LIST_MODIFIED
#define MACRO(VAR1, VAR2) printf("%s:%s\n", #VAR1, #VAR2);
int main(void)
{
MACRO_LIST_FULL
}
// OUTPUT :
// TEST1:TEST2
// TEST3:TEST4
// TEST1_MODIFIED:TEST2_MODIFIED
// TEST3_MODIFIED:TEST4_MODIFIED
This work perfectly, and it is what I want to do, but I don't want to fill the "MACRO_LIST_MODIFIED" by hand, but use the previous list "MACRO_LIST_DEFAULT" 这项工作很完美,这是我想要做的,但是我不想手工填写“ MACRO_LIST_MODIFIED”,而是使用上一个列表“ MACRO_LIST_DEFAULT”
something like that in fact : 实际上是这样的:
#define MACRO_LIST_MODIFIED \
MACRO_LIST_DEFAULT // And add _MODIFIED to elements.
I really don't know how to deal with this problem. 我真的不知道该如何处理。
thank you in advance, 先感谢您,
Here you go, I assume this is what you want to achieve and I assume you're using gcc: 在这里,我假设这是您要实现的目标,并且我假设您正在使用gcc:
#include <stdio.h>
#define MACRO_LIST( x ) \
MACRO(TEST1 ## x , TEST2 ## x ) \
MACRO(TEST3 ## x , TEST4 ## x )
#define MACRO_LIST_FULL \
MACRO_LIST( ) \
MACRO_LIST( _MODIFIED )
#define MACRO(VAR1, VAR2) printf("%s:%s\n", #VAR1, #VAR2);
int main(void)
{
MACRO_LIST_FULL
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.