我一直在尝试理解宏扩展,发现第二个 printf 给出了错误。我期望第二个打印语句生成与第一个打印语句相同的输出。我知道有一些函数可以进行字符串连接。我发现很难理解为什么第一个打印语句有效而第二个则无效。
#define CAT(str1, str2) str1 str2
void main()
{
char *string_1 = "s1", *string_2 = "s2";
printf(CAT("s1", "s2"));
printf(CAT(string_1, string_2));
}
连接字符串文字,例如"s1" "s2"
,是语言规范的一部分。只需将两个变量放在一起,就像string_1 string_2
is not语言的一部分。
如果要连接两个字符串变量,请考虑使用strcat http://en.cppreference.com/w/c/string/byte/strcat相反,但请记住为目标字符串分配足够的空间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)