在写代码的时候如果内容太长一行容纳不下就需要使用续行符 '\' 了。
1.宏定义中使用
续行符最常见的用法是在宏定义中,由于宏定义"#define"只对当行生效,在有些场景为了阅读的美观和代码的逻辑性等难免需要换行,这时候就可以使用续行符'\'实现。
#define MYPRINTF(x) printf("%s\n", x);
#define MYPRINTF(x) printf("%s\n",\
x);
上面两种写法是一样的,需要注意的是'\'后面要紧接换行,不可以写其他内容。
2.字符串太长时使用
某些场景下的字符串过长或者有特殊的阅读表达需求时需要将一个长字符串分行写
int main(void)
{
char *string1 = "hello world!";
char *string2 = "hello \
world";
char *string3 = "hello "\
"world!";
printf("%s\n%s\n%s\n", string1, string2, string3);
}
输出:
hello world!
hello world
hello world!
注意string2和string3的不同,根据需要我们大多数情况使用string3的格式。
担心使用续行符字符串存储在内存中不连续的问题作者这里帮大家测试了:
int main(void)
{
char *string1 = "hello world!";
char *string2 = "hello "\
"world!";
char *string3 = "hello "\
"friend!";
printf("%s\n%s\n%s\n", string1, string2, string3);
char *p1 = string1;
char *p2 = string2;
char *p3 = string3;
for (int i = 0; i < 10;i++)
{
printf("%p ", p1++);
}
printf("\n");
for (int i = 0; i < 10;i++)
{
printf("%p ", p2++);
}
printf("\n");
for (int i = 0; i < 10;i++)
{
printf("%p ", p3++);
}
}
输出:
hello world!
hello world!
hello friend!
0000000000404000 0000000000404001 0000000000404002 0000000000404003 0000000000404004 0000000000404005 0000000000404006 0000000000404007 0000000000404008 0000000000404009
0000000000404000 0000000000404001 0000000000404002 0000000000404003 0000000000404004 0000000000404005 0000000000404006 0000000000404007 0000000000404008 0000000000404009
000000000040400D 000000000040400E 000000000040400F 0000000000404010 0000000000404011 0000000000404012 0000000000404013 0000000000404014 0000000000404015 0000000000404016
可以看到'\'不会影响字符串的存储,和写在同一行没有区别。
3.可执行语句换行
这个其实比较鸡肋,因为代码太长我们直接换行也是可以的,使用续行符再换行多此一举 ,使用就不举例细说了。