我是编程和通过CS50在线课程的新手。
在第2讲中,David介绍了CS50 IDE,我现在第一次将其用于“问题集2-可读性”。但是,当我尝试运行一个简单的“ hello,world”程序时,遇到了一些错误消息。
以下是我要执行的步骤:
cd
以确保我位于主目录中mkdir hello
在我的主文件夹中创建一个新目录cd hello
导航到新目录open hello.c
以在新目录中创建新文件这时,一切看起来对我来说都很熟悉,因此我使用简单的“ hello,world”程序对其进行了测试:
#include <cs50.h>
#include <stdio.h>
int main(void)
{
printf("hello, world\n");
}
然后我运行make hello
并收到以下错误消息:
make: *** No rule to make target 'hello'. Stop.
然后我注意到,即使我以前运行过打开hello.c,实际上在左侧的hello目录中也没有hello.c文件。因此,我手动右键单击hello目录,然后选择“新建文件”并创建hello.c并尝试再次运行它。然后,我收到以下错误消息:
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
/usr/bin/../lib/gcc/x86_64-linux-gnu/7.4.0/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
clang-7: error: linker command failed with exit code 1 (use -v to see invocation)
<builtin>: recipe for target 'hello' failed
make: *** [hello] Error 1
有人知道我在做什么错吗?我在Google周围搜索了一些类似问题的不同答案,但似乎无法解决问题。我很困惑,所以我们将不胜感激。
如果有帮助,我还将附加一些窗口截图。
答案 0 :(得分:0)
结果是编译前我没有保存文件。标记为已解决!
答案 1 :(得分:0)
在 CS50 IDE 中,如果您在文件菜单中设置一个新文件(“创建文件”)并在开始编写程序之前为其命名,则似乎效果最佳。我一开始也有同样的问题。它似乎不知道您的文件在那里,或者更准确地说,完全识别它,除非您先这样做。换句话说,CS50 IDE 似乎并不确信文件名或文件是否存在,除非您首先从文件菜单中的正确目录中创建它。我不知道这在其他编译器上是如何工作的,但我想这样做是为了帮助形成“C 不知道 X 除非我先声明 X”的思维模式)。很高兴你修好了!