簡體   English   中英

如何使用宏對宏進行字符串化?

[英]How can I stringify a macro using a macro?

#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);
}

[實例]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM