我想知道为什么我的C程序不打印任何信息.我是100%的新兴编程人员,并且在过去几个星期内能够在
Ruby和
Python中学到一些东西,但是我无处可寻C的东西.这是总的基线,每个人都学习的简单的程序:
#include <stdio.h> int main() { printf("Hello World\n"); return 0; }
所以我已经写了,我保存为hello.c.现在我到目录,然后我尝试
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脚本,这不是,并给你一个语法错误.