我想知道为什么我的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()'
答案 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;
以显示终端窗口。