考虑以下示例:
#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
形式的字符串,而无需在运行时显式格式化?
您可以将结果分配给一个变量。
#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);
}