Cyr*_*rix 1 c string-literals rawstring cs50
我的程序根本不起作用。我收到这个错误。
population/ $ make test
test.c:6:9: error: missing terminating '"' character [-Werror,-Winvalid-pp-token]
printf(R"EOF(
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
2 errors generated.
Run Code Online (Sandbox Code Playgroud)
#include <stdio.h>
#include <cs50.h>
int main(void)
{
printf(R"EOF(
_____ _ _ _ _ _ _ _____ _
/ ____| | | (_) | | | | | | | / ____| (_)
| (___ _ _| |__ _ __ ___ _| |_| |_ ___ __| | | |__ _ _ | | _ _ _ __ ___ __
\___ \| | | | '_ \| '_ ` _ \| | __| __/ _ \/ _` | | '_ \| | | | | | | | | | '__| \ \/ /
____) | |_| | |_) | | | | | | | |_| || __/ (_| | | |_) | |_| | | |___| |_| | | | |> <
|_____/ \__,_|_.__/|_| |_| |_|_|\__|\__\___|\__,_| |_.__/ \__, | \_____\__, |_| |_/_/\_\
__/ | __/ |
|___/ |___/
)EOF");
}
Run Code Online (Sandbox Code Playgroud)
C 中的字符串文字不能跨越多行,除非换行符被转义。
但是,相邻的字符串文字会自动连接,因此以下方法有效:
const char *foo = "foo\n" "bar\n" "baz";
Run Code Online (Sandbox Code Playgroud)
由于字符串文字之间的空格无关紧要,因此我们可以编写以下内容:
const char *foo =
"foo\n"
"bar\n"
"baz";
Run Code Online (Sandbox Code Playgroud)
对比。
const char *foo = "foo
bar
baz";
Run Code Online (Sandbox Code Playgroud)
正如评论中提到的,您可以使用反斜杠转义换行符。但是,在这种情况下,您仍然必须记住手动插入换行符。
const char *foo = "foo\n\
bar\n\
baz";
Run Code Online (Sandbox Code Playgroud)
我不喜欢这个,因为它可以防止代码缩进,这对于能够遵循控制流和范围非常重要。
| 归档时间: |
|
| 查看次数: |
151 次 |
| 最近记录: |