《C语言编程初学者指南》一1.7 创建并运行第一个C程序

简介: 本节书摘来自华章出版社《C语言编程初学者指南》一书中的第1章,第1.7节,作者【美】Keith Davenport(达文波特) , M1ichael Vine(维恩),更多章节内容可以访问云栖社区“异步社区”公众号查看 1.7 创建并运行第一个C程序 gcc编译器是一个ANSI标准编译器。

本节书摘来自异步社区《C语言编程初学者指南》一书中的第1章,第1.7节,作者【美】Keith Davenport(达文波特) , M1ichael Vine(维恩),更多章节内容可以访问云栖社区“异步社区”公众号查看

1.7 创建并运行第一个C程序

gcc编译器是一个ANSI标准编译器。一个C程序要经过很多的步骤,才能变为一个可运行或执行的程序。gcc编译器为你执行了很多的任务,其中最重要的任务包括以下几个:

预处理程序代码,并查找各种指令;
在适当的时候,生成错误代码和消息;
将程序代码编译成目标代码,并将其临时存储在硬盘上;
将任何必需的库链接到目标代码,创建一个可执行文件,并将其存储到硬盘上。
提示
 

ANSI是American National Standards Institute(美国国家标准研究院)的缩写。ANSI的一般目标是,为使用信息系统的人们提供计算标准。
在创建和保存C程序的时候,使用.c扩展名。这个扩展名是用C创建的程序的标准命名惯例。要创建一个新的C程序,从Windows下运行Notepad这样的一个文本编辑器,或者像下面这样使用nano或Vim:

nano hello.c 
vim hello.c

技巧
 

nano是另一款常用的基于UNIX的文本编辑器,也是Cygwin软件包所附带的文本编辑器。从最终用户的角度来看,它使用起来比Vim更为直观和容易。但是,它确实不像Vim一样拥有那么多功能。尽管namo和其他的文本编辑器并不是安装Cygwin时候的默认选项,但是在安装的时候,你可以通过Editors区域下的Select Packages窗口来进行选择。
前面的两条命令,都会打开编辑器并创建一个名为hello.c的新文件。一旦使用nano或Vim这样的编辑器创建并保存了C程序,你就已经准备好使用gcc编译程序了。

从Cygwin UNIX shell中,输入如下内容:

gcc hello.c

如果程序成功地编译了,gcc会创建一个名为a.exe的、新的可执行文件。

注意
 

如果没有成功地运行编译后的程序,验证一下%systemdrive%: cygwinbin(其中%systemdrive%是安装Cygwin的驱动器)目录结构已经成功地添加到系统的路径变量中了。
a.exe是这个版本的gcc所编译的所有C程序的默认的名称。如果你是在UNIX操作系统上的一个不同的gcc版本下编程,文件名可能是a.out。

每次使用gcc编译一个C程序的时候,它都会覆盖以前的a.exe文件中包含的数据。可以通过给gcc一个选项,来为可执行文件指定一个唯一的名称,从而改正这一点。指定一个具有唯一的名称的可执行文件的语法如下:

gcc programName –o executableName

关键字programName是你的C程序的名称,-o(字母o)选项告诉gcc,你将要指定一个唯一的编译名称,而executableName关键字是想要的输出文件的名称。如下是使用实际的文件名的另一个示例:

gcc hello.c  -o hello.exe

在UNIX命令提示符输入如下的命令,可以访问gcc的man页面(用于UNIX命令的在线手册),并找到关于gcc的大量信息。

man gcc
要通过Cygwin U
N```  
IX命令提示符来执行程序,输入如下内容:

./hello

和Windows不同,当尝试执行一个程序的时候,UNIX shell不会默认在当前目录下查看。通过在编译后的程序之前带上一个./字符序列,我们告诉UNIX shell在当前目录下查找编译后的C程序,在这个例子中,当前目录就是hello目录。

如果你使用一个Microsoft Windows系统,也可以从基于Microsoft的命令行shell(通常称之为DOS命令提示符)来执行程序,只要直接输入程序的名称就行了(假设你位于工作目录之中)。
相关文章
|
3月前
|
存储 自然语言处理 编译器
【C语言】编译与链接:深入理解程序构建过程
【C语言】编译与链接:深入理解程序构建过程
|
1月前
|
存储 编译器 C语言
【C语言】数据类型全解析:编程效率提升的秘诀
在C语言中,合理选择和使用数据类型是编程的关键。通过深入理解基本数据类型和派生数据类型,掌握类型限定符和扩展技巧,可以编写出高效、稳定、可维护的代码。无论是在普通应用还是嵌入式系统中,数据类型的合理使用都能显著提升程序的性能和可靠性。
51 8
|
2月前
|
存储 缓存 算法
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式
在C语言中,数据结构是构建高效程序的基石。本文探讨了数组、链表、栈、队列、树和图等常见数据结构的特点、应用及实现方式,强调了合理选择数据结构的重要性,并通过案例分析展示了其在实际项目中的应用,旨在帮助读者提升编程能力。
76 5
|
2月前
|
C语言
C语言编程中,错误处理至关重要,能提升程序的健壮性和可靠性
C语言编程中,错误处理至关重要,能提升程序的健壮性和可靠性。本文探讨了C语言中的错误类型(如语法错误、运行时错误)、基本处理方法(如返回值、全局变量、自定义异常处理)、常见策略(如检查返回值、设置标志位、记录错误信息)及错误处理函数(如perror、strerror)。强调了不忽略错误、保持处理一致性及避免过度处理的重要性,并通过文件操作和网络编程实例展示了错误处理的应用。
78 4
|
2月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
70 1
|
2月前
|
网络协议 物联网 数据处理
C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势
本文探讨了C语言在网络通信程序实现中的应用,介绍了网络通信的基本概念、C语言的特点及其在网络通信中的优势。文章详细讲解了使用C语言实现网络通信程序的基本步骤,包括TCP和UDP通信程序的实现,并讨论了关键技术、优化方法及未来发展趋势,旨在帮助读者掌握C语言在网络通信中的应用技巧。
54 2
|
2月前
|
程序员 C语言
C语言中的指针既强大又具挑战性,它像一把钥匙,开启程序世界的隐秘之门
C语言中的指针既强大又具挑战性,它像一把钥匙,开启程序世界的隐秘之门。本文深入探讨了指针的基本概念、声明方式、动态内存分配、函数参数传递、指针运算及与数组和函数的关系,强调了正确使用指针的重要性,并鼓励读者通过实践掌握这一关键技能。
45 1
|
3月前
|
NoSQL C语言 索引
十二个C语言新手编程时常犯的错误及解决方式
C语言初学者常遇错误包括语法错误、未初始化变量、数组越界、指针错误、函数声明与定义不匹配、忘记包含头文件、格式化字符串错误、忘记返回值、内存泄漏、逻辑错误、字符串未正确终止及递归无退出条件。解决方法涉及仔细检查代码、初始化变量、确保索引有效、正确使用指针与格式化字符串、包含必要头文件、使用调试工具跟踪逻辑、避免内存泄漏及确保递归有基准情况。利用调试器、编写注释及查阅资料也有助于提高编程效率。避免这些错误可使代码更稳定、高效。
560 12
|
4月前
|
存储 算法 Linux
C语言 多进程编程(一)进程创建
本文详细介绍了Linux系统中的进程管理。首先,文章解释了进程的概念及其特点,强调了进程作为操作系统中独立可调度实体的重要性。文章还深入讲解了Linux下的进程管理,包括如何获取进程ID、进程地址空间、虚拟地址与物理地址的区别,以及进程状态管理和优先级设置等内容。此外,还介绍了常用进程管理命令如`ps`、`top`、`pstree`和`kill`的使用方法。最后,文章讨论了进程的创建、退出和等待机制,并展示了如何通过`fork()`、`exec`家族函数以及`wait()`和`waitpid()`函数来管理和控制进程。此外,还介绍了守护进程的创建方法。
C语言 多进程编程(一)进程创建
|
3月前
|
存储 文件存储 C语言
深入C语言:文件操作实现局外影响程序
深入C语言:文件操作实现局外影响程序
下一篇
开通oss服务