gpt4 book ai didi

c - 如何使用宏将宏字符串化?

转载 作者:行者123 更新时间:2023-12-01 12:15:20 24 4
gpt4 key购买 nike

#define A_1 {2,1124,124110,2,0,20,5121,0,21241,10}
#define SFY(macro) #macro

void func(char* s, int i) {
printf("%d %s", i, s);
}

int main (void) {
int a[10] = A_1;
func(SFY(A_1), 2);
}

我想要的输出是:

2 {2,1124,124110,2,0,20,5121,0,21241,10}

如何将这样的宏字符串化?

最佳答案

您需要再添加一层间接寻址以扩展宏(并且由于它包含逗号,您必须使用可变参数):

#define A_1 {2,1124,124110,2,0,20,5121,0,21241,10}
#define SFY_2(...) #__VA_ARGS__
#define SFY(macro) SFY_2(macro)

void func(char* s, int i) {
printf("%d %s", i, s);
}

int main (void) {
int a[10] = A_1;
func(SFY(A_1), 2);
}

[Live example]

关于c - 如何使用宏将宏字符串化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48942903/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com