在您的#include"cs50.h" 标题中,您应该这样输入:#include<cs50.h>。另外,尝试做:
#include<cs50.h>
#include<stdio.h>
int main(void)
{
string name = get_string("Enter your name: ");
printf("%s\n", name);
}
而不是这个:
#include "cs50.h"
#include <stdio.h>
int main(int argc, string argv[])
{
string name;
printf("Enter your name: ");
name = GetString();
printf("Hello, %s\n", name);
}
那应该摆脱错误消息。
PS 在第 2 周,他们会告诉您有关 help50 的信息,但如果您愿意,现在可以使用它。我自己发现它非常有用。它是这样工作的:在你的终端窗口(你执行 ./hello 和 clang 的那个)你应该输入:“help50 make hello”(不带引号)然后它会输入:asking for help... in yellow . 然后它将破译错误消息并用更简单的语言输入。例如:
#include <stdio.h>
#include <cs50.h>
int main(void)
{
string name = get_string("Enter your name: ");
printf("%s\n", name)
}
我打个招呼,这会出现:
clang -ggdb3 -O0 -std=c11 -Wall -Werror -Wextra -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wshadow hello.c -lcrypt -lcs50 -lm -o hello
hello.c:13:21: error: expected ';' after expression
printf("%s\n", name)
^
;
1 error generated.
<builtin>: recipe for target 'hello' failed
make: *** [hello] Error 1
但是当我使用 help50 make hello 时,会出现:
clang -ggdb3 -O0 -std=c11 -Wall -Werror -Wextra -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wshadow hello.c -lcrypt -lcs50 -lm -o hello
hello.c:13:21: error: expected ';' after expression
printf("%s\n", name)
^
;
1 error generated.
<builtin>: recipe for target 'hello' failed
make: *** [hello] Error 1
Asking for help...
hello.c:13:21: error: expected ';' after expression
printf("%s\n", name)
^
;
Are you missing a semicolon at the end of line 13 of hello.c?
如您所见,现在我知道我的问题并且可以解决它。Help50 将错误消息解读为您可以理解的语言。