C语言开发之Hello,World来龙去脉

来源:互联网 发布:摇钱树网吧计费软件 编辑:程序博客网 时间:2024/05/17 04:07

引言

几乎所有的技术类书籍,都是从经典的HelloWorld程序出发,带领大家进入编程世界。我们的示例也不例外,甚至可能会更加“简单”,我们研究的主题就是“HelloWrold”的来龙去脉,通过“helloworld”对c语言的学习进行展开,最终扩展到嵌入式领域。我将以自身的切身体会,从一个程序员的角度,以简单易懂的语言来分析这个“简单”的“HelloWorld”,首先我们需要做的,就是怎么实现这个简单的“helloworld”代码呢?

HelloWorld

代码很简单,就不给大家卖关子了,HelloWorld全部代码如下:

/*

Hello Wrold,example

*/

#include<stdio.h>

int main(void)

{

printf("Hello,World\r\n");

return 0;

}

希望没吓着您,总共就6行代码, 但是想要能让他运行,我们还需要做什么操作呢?

代码文件与可执行文件

不管是怎么样的代码,最终都要生成机器(本书的机器只的可能是一台电脑,或者一个手机,或者一个pad)可识别的文件,最终在机器上运行。什么是代码,简单点说就是字节流组成的文本文件(a,b,c,+,1,2,3….),与一个文本文件区别在哪儿呢。普通的一个txt文本文件,在其中输入任何字符汉字符号的组合,他与代码之间的简单的区别就在于,代码是遵循着某种规则的字符串组成的文本,而普通文件你可以按照需要随便组合。另外,如果是c语言程序,需要将文件后缀.txt修改成.c,如果是c++则需要修改成.cpp,否则,在编译的时候,编译器可能要抱怨,输入参数格式有问题。现在可以将上述文件命名为以.c为后缀的任何文件,这边暂且命名为hello.c

好吧,了解了什么是代码之后,之后的工作都可以交由编译器处理了。编译器就是一个工具,将代码转化成机器可以识别的命令(编译器还有很多其他强大的功能,用到的时候再一一说明)。命令以文件的形式保存在硬盘上,windows系统通常是.exe的后缀,linux系统通常没有后缀(由于本书的另一个目的是想将读者引入嵌入式开发领域,基于现在linux嵌入式需求量大,以及代码开源,所以示例都是基于linux系统进行说明的)。

linux系统运行如下两条命令:

gcc  hello.c

gcc是什么呢?gcclinux下的一个编译器,暂且理解成一个命令,这个命令会把hello.c转化成机器能够识别的文件,hello.c作为gcc的一个输入参数,我很希望你能知道输入参数是什么意思,如果确实不理解,可以拿绞肉机说明,绞肉机就想相当于gcc,肉就相当于输入参数,在没有肉的情况下,绞肉机是什么事情都干不了的,即使让其工作,他也仅仅在那边空转,只有有了肉,绞肉机才能将肉变成肉馅。明白了吧,那第一条命令产生的肉馅在哪儿呢,要是你跑到hello.c所在的目录你可以会发现多了一个a.out文件,这个就是输出的可执行文件,就是绞肉机输出的肉馅。

./a.out

这条命令,估计你已经猜到第二条命令是干啥用的,把生成的执行文件在对应的机器上运行(不用担心,下节就告诉你什么叫运行)。是的,第二条命令就是执行我们生成的可执行文件,也就是机器可以识别的文件,那么“.”是什么意思呢,这个在linux系统中代表当前的目录,“/”是linux下的目录间的分隔符,跟windos下的相反,windows下为“\”,./a.out代表的意思就是当前目录下a.out,我很希望你知道“当前目录“代表什么意思,如果确实不知道,举个window系统下的例子,在你电脑的某个硬盘的目录下可能存放了一些你想要的视屏,你必须点击鼠标到对应存放视频的目录,当你进入到这个目录之后,现在您所处视频的目录就是当前目录,例如(d:\学习\视频)。好吧,明白了吧。那么为什么输入这样的命令后,就可以执行a.out了呢,这个后面章节会有描述,现在仅仅需要知道,生成的可执行文件都可以用./+可执行文件的形式来执行他。如果我不想用a.out这个默认的名字怎么办,这个简单,在编译的时候,将编译命令增加两个参数:

gcc  -o hello hello.c

现在gcc有三个输入参数,ooutput 缩写,即输出。如果你喜欢打字的话,你也可以输入如下命令

gcc –-output hello hello.c

这行命令的效果跟上一行是一样的,仅仅的差异,这边没有使用缩写,后面的hello代表了要输出文件的命名了,这边不会生成a.out了,你可以以你想要的任何名字对他命令,即使跟系统的命令命名相同也没关系,但是最好别这样。接下来可以看看运行的效果了。



今天就写到这了,接下来会分析什么叫运行,以及写计算机程序的目的。

0 0
原创粉丝点击