繁体   English   中英

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

[英]Why do I get no output for very simple Hello World program?

我想知道为什么我的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()'

当你输入

gcc hello.c

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

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

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

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

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

运行这些

./a.out./hello

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

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

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

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

欢迎使用编程和Stack Overflow!

gcc hello.c

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

./a.out

正如你对“你好”的说法一样,如果我理解正确的话。
你必须学习编译,链接和执行之间的区别,如果你想用C编程,找到一个好的初学者的书或教程,这是值得的!
干杯!

你得到了

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

在hello.c源文件上设置保护并尝试运行它时出错。

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

gcc -o hello hello.c

我使用的订单并不重要。 我只是习惯于编译这种方式。 你用这种方式编译

gcc hello.c -o hello

这很好。

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

./hello

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM