从另一个宏生成 C 预处理器宏
C preprocessor macro generation from another macro
我想从另一个宏列表创建一个宏列表。不知道怎么形容,举个例子吧:
#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
这很完美,这就是我想要做的,但我不想手动填充 "MACRO_LIST_MODIFIED",而是使用之前的列表 "MACRO_LIST_DEFAULT"
事实上是这样的:
#define MACRO_LIST_MODIFIED \
MACRO_LIST_DEFAULT // And add _MODIFIED to elements.
我真的不知道怎么处理这个问题。
提前谢谢你,
给你,我假设这就是你想要实现的,我假设你正在使用 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
}
我想从另一个宏列表创建一个宏列表。不知道怎么形容,举个例子吧:
#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
这很完美,这就是我想要做的,但我不想手动填充 "MACRO_LIST_MODIFIED",而是使用之前的列表 "MACRO_LIST_DEFAULT"
事实上是这样的:
#define MACRO_LIST_MODIFIED \
MACRO_LIST_DEFAULT // And add _MODIFIED to elements.
我真的不知道怎么处理这个问题。
提前谢谢你,
给你,我假设这就是你想要实现的,我假设你正在使用 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
}