目录
Linux开发者的基本素养-文件分类
补充命令1-pwd
补充命令2-clear
在Linux上编写C程序
在Linux上编译程序
思考:C语言中一定要main函数吗
我们为什么要学习C语言?学习C语言有助于理解计算机底层工作原理!
后面我们的很多项目也都是用C语言操作的。
说明:我们学过单片机的一般都是有C语言基础的了,网上关于C语言的资料有很多,大家如果对C语言不熟悉的话可以先去详细学一下,再以这篇博文作为复习资料学习。
这篇博文的目的是复习C语言,以30多个编程题作为复习要点,这30多个编程题基本涵盖了C语言所有的内容了,只要你掌握了这30多个编程题,那么你的C语言基本就没什么问题了。
注意:由于本专栏是嵌入式全栈开发专栏,为了我们能熟悉以后实际工作中的开发环境,我们写C语言全部在Linux中的vim编辑器中写,这么做事为了我们能够熟练掌握Linux系统的常用命令以及Linux上的vim编辑器的常用工作命令,以达到对口训练的目的!
vim编辑器的一些工作命令在上一篇博文中已经详细介绍过了,如果不了解可以先去看看。
我们正式开始:
首先我们现在Linux终端创建一个文件夹,不知道怎么创建的,可以去翻看本栏目中的Linux基础命令介绍博文。
Linux开发者的基本素养-文件分类
今后我们要在Linux终端进行很多学习,在学习过程中会有很多文件要创建,所以最好是一开始就分类好:
补充命令1-pwd
pwd 即 Print Working Directory 打印工作目录,其主要功能是显示目前所在目录,即显示出当前目录所在的路径。
补充命令2-clear
如果你的Linux终端敲的这些命令行太多了,可以用clear把它清除掉。
回车就清除了,但是我们只是清除那些命令,我们还是处于清除前所在的目录下
输入vim 1-helloworld.c回车后我们就用vim编辑器打开了1-helloworld.c文件。
现在可以编写C语言代码了。
在Linux上编写C程序
先介绍一下程序编写时会涉及到的一些基础操作:
我们先上C语言的基本框架
如果想要加上注释的话,要在插入模式下进行
如果要在Linux的vim编辑器中输入中文,可以在右上角的这里设置
我们先简单写出打印一个helloworld的程序
在Linux上编译程序
那在vim上写的代码如何编译呢?
我们先保存并退出1-helloworld.c文件 (保存并退出的命令在前面几篇博文中都介绍过了,在这里不再赘述,不懂的可以去翻看一下)
我们用gcc这个工具来编译我们的程序,它是Linux中的一个编译器
注意:敲这段命令的时候千万不要贪图省事用tab键自动补全-o后面的”1-helloworld”,因为这样敲的话它会重新生成一个二进制文件“1-helloworld.c”,这个二进制文件会覆盖掉原来的即-o前面的1-helloworld.c,那我们刚刚写的代码就白写了。
-o就是output输出的意思,那这段命令的意思就是用gcc编译1-helloworld.c文件,输出1-helloworld文件
回车
如果我们的程序没有错误的话,就可以很顺利地编译出来,就会是像上图一样的回车后的结果。
如果程序有bug的话,回车后它就会给出有bug提示
我们可以根据它的提示进行修改程序,再次编译,就好了
编译完成了,就会输出一个1-helloworld二进制文件,我们访问这个文件就能看到程序运行的结果
它的确成功运行并打印出来了一个”helloworld”
思考:C语言中一定要main函数吗
我们来思考一个问题:
main作为程序的入口,C语言中一定要main函数吗?不一定。
我们来验证一下:
我们用vim写打开一个2-nomain.c文件
写一个没有main函数的程序
编译一下看看会不会报错
如果我们按照有main函数的程序的编译命令来写的话就会报错,但是我们如果在命令后面加上“-nostartfiles”即没有开始文件的话,即就不会报错了
虽然这么写它也会报一个警告,但也只是警告warning,不错报错error,我们也看到它已经编译出了一个2-nomain文件了,说明没有main函数它也可以运行。
我访问一下这个2-nomain文件看看能不能成功打印出“helloworld”
的确成功打印出来了。
但是我们还看到它报出“段错误”
这是因为没有main函数,程序运行结束后,不知道退回到哪里去,
一般像这种没有main函数的程序我们要指定它退出的方式。
exit就是退出的意思
我们再次编译一次看看
这样它就没有“段错误”警告了。
没有main函数它也正常输出了,但是这样的代码没有意义,上面只是为了验证一下。
以上验证的结果就是没有main函数的程序在Linux上也是能够运行的。
以上就是这篇内容,如想了解更多,欢迎订阅本专栏!
如有问题可评论区或者私信留言,如果想要进交流群请私信!