将C宏定义字符串连接到字面字符串

3
让第一行为:
#define TAG_LEN 32

现在,我需要将它与一个字符串常量连接起来;就像这样:
puts("Blah" [insert your answer] TAG_LEN); // I need "Blah32".

"32" 不是一个字符串,所以那样做行不通。你需要调用一个宏来实现这个魔法。 - unwind
在这里检查双重字符串化技巧:字符串化宏 - pablo1977
2个回答

3
#define STR_NOEXPAND(tokens) # tokens
#define STR(tokens) STR_NOEXPAND(tokens)
puts("Blah" STR(TAG_LEN));

1
注意:以下划线为前缀的标识符被保留给实现。 - Quentin

0

你可以做:

printf("Blah%d", TAG_LEN);

或者如果你有一个字符串

char *yourString;// initiate it with your value

printf("Blah%s%d",yourString, TAG_LEN);

这里需要使用字面字符串拼接,而不是动态数组复制。 - dyomas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接