c语言中断 编译,你不知道的C语言--第一篇——编译和运行

相信很多理工科的同学在大学期间都或多或少的学过C语言,但由于老师教的不用心或者当时我们知识的限制,导致我们对C语言存在许多误解。并且我们在学习c语言时,为了方便省事,大多数人都使用IDE,导致我们对编译的过程完全没有概念。

博主现在是一名大三的本科生,有幸读到宋劲杉老师的《一站式学习C编程》,发现了许多原来对于c语言的错误和模糊的认识,所以总结出来供自己复习并与大家分享

有错误的地方请大家及时指正,谢谢!

编译执行

对于我们初学编程时都要写的hello world程序,相信大家都非常熟悉了,但是即使是这样一个简单的程序,我们也未必都全能掌握,下面是helloworld代码:

#include

int main(void)

{

printf("Hello, world.\n");

return 0;

}

要在Linux上不借助任何IDE编译运行它,我们需要在命令行输入一系列的命令:

$ gcc main.c -o main

$ ./main

Hello, world.

其中,gcc是linux下c语言的编译器,gcc main.c -o main的意思是编译main.c生成可执行文件main,这个main可以自己命名。

对于编译时的警告,有时候并不会全部提醒,但如果我们在编译时加上-Wall参数,编译器便会显示出所有的警告,供我们参考修改程序:gcc -Wall main.c -o main

编译时和运行时

大家在初学c语言时,一定会被编译时和运行时搞得一头雾水,因为那时候我们使用IDE一键运行,对于我们来说编译运行似乎就是一样的。然而有了上面的知识,我们就很好区分编译时和运行时了。

所谓编译时,就是我们在命令行输入gcc编译文件后产生可执行文件的过程,在这段时间出现的错误,就是编译时错误,一旦编译时出现了错误,就不会再产生可执行文件了,编译就被中断了。

而运行时错误就是在编译通过,生成可执行文件后,我们运行这个可执行文件之后产生的错误,这种错误一般更难捕捉。

如我们在学习全局变量和局部变量时有一条规定:

局部变量可以用类型相符的任意表达式来初始化,而全局变量只能用常量表达式来初始化。

之所以会有这样一条规定,就是因为全局变量必须在程序开始运行时初始化完成(运行任何语句之前),所以初始值必须保证保存在编译生成的可执行文件中,因此初始值必须在编译时计算出来。所以为了简化编译器,才规定全局变量只能用常量表达式来初始化。

问题的关键还是要区分编译时和运行时

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值