为什么我没有得到非常简单的Hello World程序的输出?

时间:2012-06-12 15:40:57

标签: c

我想知道为什么我的C程序不打印任何信息。我是100%的编程新手,过去几周我已经能够在Ruby和Python中学到一些东西,但是我对C的东西无处可去。以下是每个人首先学习的总基线,简单程序:

#include <stdio.h>

int main()

    {
        printf("Hello World\n");
        return 0;
    }

所以我已经写了,我保存为hello.c。现在我cd到它所在的目录,然后我尝试

gcc hello.c

没有任何反应 - 没有错误,没有任何错误。如果我写了

gcc hello.c -o hello

一个新的可执行文件被写入我的目录,当我打开它时,它看起来像普通的命令行,并且在那里写了“Hello World”,正如我第一次在终端中预期的那样。

我也试过让hello.c成为一个可执行文件,但是当我这样做时,我得到了

syntax error near unexpected token `('
`int main()'

7 个答案:

答案 0 :(得分:14)

键入

gcc hello.c

没有任何反应,这是可以预料的。或者更确切地说,GCC将使用默认名称编译可执行文件,对我来说是a.out。如果我在命令行输入./a.out,我会看到输出。

我认为从Ruby / Python背景中可能会有一个稍微大一点的概念问题。 Ruby和Python是(通常)解释语言,这意味着当您创建脚本文件时,您可以将其标记为可执行文件,并且通过some magic操作系统将启动一个程序来读取文件并为您执行它们。但是,C是编译的。因此,当您运行GCC时,它将获取源文件并将其转换为可执行文件,具有默认名称或指定名称。此时,除非编译过程出现问题,否则不会期望看到任何输出。然后,您可以运行./hello,这是一个可执行文件,并查看您的输出。

这也解释了为什么你不能将hello.c标记为可执行文件并运行它。它需要首先编译成可执行文件。看起来系统假装它是一个shell脚本,它不是,并且给你一个语法错误。

答案 1 :(得分:7)

gcc hello.c将生成名为a.out的文件 gcc hello.c -o hello将生成名为hello

的文件

这些是可执行文件,您需要执行/运行这些文件才能获得输出。

将其作为

运行

./a.out./hello

答案 2 :(得分:7)

gcc hello.c -o hello指定您要创建名为hello.exe的可执行文件。

您必须编译所有C文件,然后运行可执行文件以运行该程序。您实际上无法运行.c文件。如果不指定exe,则只编译。你没有错误的事实是一件好事,因为这意味着你的代码是正确的! :)

答案 3 :(得分:5)

第一次,您的可执行文件被命名为&#34; a.out&#34; (或&#34; a.exe&#34;在Windows上),这是gcc为可执行文件指定的历史默认名称。

你应该花点时间弄清楚源和可执行文件之间的区别,以及打开和执行之间的区别......

答案 4 :(得分:3)

欢迎使用编程和Stack Overflow!

gcc hello.c

编译文件并生成可执行文件'a.out',但不执行它。这就是为什么你的命令行没有发生任何事情 要开始执行,您必须输入:

./a.out
如果我理解的话,正如你为'你好'做的那样 你必须学习编译,链接和执行之间的区别,如果你想用C编程,找到一本好的初学者的书或教程,这是值得的!
干杯!

答案 5 :(得分:0)

你有

syntax error near unexpected token `('
`int main()'
在hello.c源文件上设置保护并尝试运行它时出现

错误。

使用gcc将.c源文件转换为可以运行的二进制程序。

gcc -o hello hello.c

我使用的顺序并不重要。我只是习惯于编译这种方式。你这样编译了

gcc hello.c -o hello

这很好。

成功的编译和链接创建了一个名为hello的输出文件,这就是你要运行的文件

./hello

答案 6 :(得分:-1)

您是否尝试在#include<conio.h>之前添加getch()并添加return 0;以显示终端窗口。