我想知道为什么我的 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(通常)是解释型语言,这意味着当您创建脚本文件时,您可以将其标记为可执行文件并通过 some magic操作系统将启动一个程序来读取文件并为您执行它们。但是,C 是经过编译的。因此,当您运行 GCC 时,它会将您的源文件转换为可执行文件,使用默认名称或指定名称。此时,除非编译过程出现问题,否则不会期望看到任何输出。然后您可以运行 ./hello
,这是一个可执行文件,并查看您的输出。
这也解释了为什么不能将 hello.c
标记为可执行文件并运行它。它需要先编译成可执行文件。看起来系统假装它是一个 shell 脚本,但它不是,并给你一个语法错误。
关于c - 为什么非常简单的 Hello World 程序没有输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11000065/