c语言基础——开发环境

在 Linux 下运行 C 程序

市面上常见的 Linux 都是发行版本,典型的 Linux 发行版包含了 Linux 内核、桌面环境和各种常用的必备工具,国内使用较多的是 Ubuntu(乌班图)、CentOS 、Deepin(深度 Linux)。我们实验楼的环境采用的是 Ubuntu 的操作系统。

2.1.1 Gedit

gedit 是一个简单实用的文本编辑器,拥有漂亮的界面,支持语法高亮,比 Vim 更易上手。本教程将 gedit 作为 C 代码编辑器,当然你也可以使用 gvim 等其它编辑器。在上一节课我们已经使用过 gedit 编写代码了,相信大家并不陌生。

2.1.2 GCC

Linux 下使用最广泛的 C/C++ 编译器是 gcc,大多数的 Linux 发行版本都默认安装了此编译器,不管是开发人员还是初学者,一般都将 gcc 作为 Linux 下首选的编译工具。本教程毫不犹豫地使用 gcc 来编译 C 程序 (编译概念不懂也不要紧,我们马上就会讲述)。

程序编写完成后保存文件并退出,打开终端并 cd 到当前目录,上一节我们写第一个 C 语言程序在终端输入下面的命令时,便调用了 gcc 编译器:

gcc -o 1-1 1-1.c

此操作可以直接将 1-1.c 文件编译链接为可执行文件 1-1 。

可以看到在当前目录下多出一个文件 1-1,这就是可执行文件。不像 Windows,Linux 不以文件后缀来区分可执行文件,Linux 下的可执行文件后缀理论上是可以任意更改的。

在 Windows 下运行 C 语言程序

Windows 下的 C 编程常常使用 VC 6.0 或者 Dev C++ 5.7.1,VC 6.0 是一个集成开发环境( IDE ),简单来讲就是编程、编译、链接和执行集成在了一个软件上面。在我们实验楼暂且不需要你去学习在 Windows 下的 C 语言编程。当然,如果你想要了解如何在 Windows 下编程 C 语言,可以查看该教程 VC 6.0使用教程,网上也有非常多的其它相关教程可以供你学习参考。

3.1 创建 C 程序

C 程序的创建过程有四个基本步骤:

  1. 编辑;
  2. 编译;
  3. 链接;
  4. 执行。
3.1.1 编辑

编辑的过程就是创建和修改 C 程序的源代码——我们使用 gedit 编写的程序便是源代码。其实在 Linux 上,最常用的文本编辑器是 Vim 编辑器,为了让大家更便捷地理解 C 语言我们采用了 gedit 编辑器,有兴趣的小伙伴可以在我们实验楼学习一下 Vim 编辑器。

3.1.2 编译

编译器可以将源代码转换成机器语言,在编译过程中,会找出错误并报告。这个阶段的输入是在编辑期间产生的文件,常称为源文件。 编译器能找出程序中很多无效的和无法识别的错误,包括结构错误,例如程序的某个部分永远不会执行。编译器输出的结构叫作对象代码,存放它们的文件叫作对象文件。在 Linux 中这些文件的扩展名通常是 .o,在 Windows 下面这些文件的扩展名通常是 .obj 。如果编译成功就会生成一个文件,它与源文件同名。但扩展名为 .o 或者 .obj 。 其实我们在上一节编写第一个 C 语言程序的时候,使用的 gcc -o 1-1 1-1.c 这条命令既包含了编译也包含了链接,所以直接生成了可执行文件 1-1 。 在 Linux 下编译是在源代码文件所在目录输入以下命令(假如源代码文件是上节课的 1-1.c):

gcc -c 1-1.c

这时源文件所在的目录将会生成 1-1.o 的文件。

3.1.3 链接

链接器将源代码文件中由编译器产生的各种对象模块组合起来,再从 C 语言提供的程序库中添加必要的代码模块,将它们组合成一个可执行文件。链接器也可以检测和报告错误,例如程序中引用了一个根本不存在的库组件。链接一旦成功,就会生成可执行文件,在 Windows 下面可执行文件的扩展名是 .exe,在 Linux 下面,可执行文件没有扩展名,但它的文件类型是可执行的。 在编译生成 .o 文件的基础上我们将会输入以下命令(以编译生成 1-1.o 为例):

gcc -o 1-1 1-1.o

这时 1-1.o 所在的目录将会生成 1-1 可执行文件。 多数情况下,我们是通过gcc -o 1-1 1-1.c一次性完成编译和链接。

3.1.4 执行

执行阶段就是成功完成了前述的三个过程后,运行程序。但是这个阶段可能会出现各种错误,包括输出错误,计算机什么也不做哦,甚至是计算机崩溃。无论如何,都需要我们返回编辑阶段,检查并修改源代码。相信大家都还记得上一节课的执行命令,在文件所在目录执行:

./1-1

 

3.2 C 语言的简单结构

3.2.1 预处理指令

1-1.c 的第一行代码如下:

#include<stdio.h>

 

严格地说,它不是可执行程序的一部分,但它很重要,事实上程序没有它是不能执行的。符号 # 表示这是一个预处理指令,告诉编译器在编译源代码之前,要先执行一些操作。编译器在编译过程开始之前的预处理阶段会处理这些指令。预处理指令的类型相当多,大多放于程序源文件的开头。

在这个例子中,编译器要将 stdio.h 文件的内容包含进来,这个文件被称为头文件,因为通常放在程序的开头处。在本例中,头文件定义了 C 标准库中一些函数的信息,本例要用到标准库中的 printf()函数,所以必须包含 stdio.h 头文件。stdio 是“ standard input & output ”的缩写,包含了编译器理解 printf()以及其它输入 / 输出函数所需要的信息。C 语言所有头文件的扩展名都是 .h 。在以后的学习过程中大家会看到很多其它的预处理指令。

3.2.2 main()函数
int main()
{
    printf("Hello ShiYanLou");
    return 0;
}

 

main()函数是“主函数”。每个 C 程序都由一个或多个函数组成,但每个 C 程序都必须有一个 main()函数——因为每个程序总是从这个函数开始执行。

程序的几乎全部工作都是由各个函数分别完成的,函数是 C 程序的基本单位,在设计良好的程序中,每个函数都用来实现一个或多个特定的功能。

一个 C 语言程序由一个或者多个函数组成,其中必须包含一个 main()函数(且只能有一个 main()函数)。 一个函数包括两个部分:

一是 函数首部 即函数的第一行:

int main()

二是 函数体 即函数首部下面的花括号内的部分:

{

}

 

函数的内容我们会在以后的课程中涉及,这里只是简单地提及。

3.2.3 程序框架
#include<stdio.h>
{
    XXXX
    return 0;
}

 

我们的课程的所有程序都需要写上这一段,直到学习函数之前,我们的代码都是放在“xxxx”的位置,所以以后你每次写程序的时候,可以先把这个框架写上去,再在这个框架中间写代码。

3.2.4 printf()函数

printf()是 C 编译系统提供的函数库中的输出函数。printf()函数中双撇号内的字符串“ Hello ShiYanLou ”按照原样输出,每个语句最后都有一个分号,表示语句结束。

转载于:https://www.cnblogs.com/hackerbird/p/8871578.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值