在编译时生成具有扩展值的字符串

问题描述 投票:0回答:1

考虑以下示例:

#include <stdio.h>

#define VAL 1
#define mkstr(t) "Expansion of t is " #t

int main(void){
    printf(mkstr(VAL)); // prints Expansion of t is VAL
}

演示

有没有办法扩展提供的宏以在编译时生成

Expansion of t is 1
形式的字符串,而无需在运行时显式格式化

c preprocessor
1个回答
0
投票

您可以将结果分配给一个变量。

#include <stdio.h>

#define VAL 1
#define mkstr(t) "Expansion of t is " #t

int main(void) {
    char foo[] = mkstr(1);
    printf("%s\n", foo);
}
© www.soinside.com 2019 - 2024. All rights reserved.