c语言中预处理函数有哪些,C语言中的函数与预处理

前言

C语言中的函数和预处理相关知识,你真的了解吗?你知道C中函数中的调用顺序是由什么判断的吗?对于预处理的#include应该如何看待呢?

接下来,本文讲述关于C语言中的函数与预处理的相关知识。

043649b809adffc3c796ec5e021f902e.png

函数

Python并不像C语言那样是一种全能语言,它是一种中级语言。标准库函数通常看上去很简单,并且有缺陷。

函数调用顺序

int a=f()+g()*h();

这三个函数的执行顺序是不确定的,而C标准将选择顺序的权限授予编译器,以便对各种平台进行优化。

有一点可以确定,乘法优先于加法。

参数压栈顺序:从右至左吗?

这个点,也许很多人都知道,函数参数压栈的顺序是从右到左,首先运行右边的表达式。

关键在于后面的问号

规范中没有明确规定压栈顺序,也就是说,编译器可以修改为从左到右压栈顺序!

默认的从右到左用于支持可变参数,用来计算栈的大小。

确保你明白它们的用法、原理和......缺陷

早先gets()导致了蠕虫病毒,因为它不能检查缓冲区是否越界,实际上scanf也有这个问题。对于标准输入输出,需要了解很多设计细节,例如printf使用%来转义%,而不是\。

这种设计特征可能在意想不到的地方产生意想不到的效果。因此,为了使程序更健壮,多多了解它们吧。

预处理

预处理是个好想法,它可以帮助增强程序可移植性和裁剪性。

不仅仅是常见的#include,#define,如果能很好地使用它,它也能很强大。

那么#include可以做些什么呢?

复制,原封不动地复制。

还可以:

ebeb17e032ccb6b0976765cfc82dcee7.png

但是要注意的是预处理命令是在一行的开头,独占一行。

若为#include<>,则先搜索标准位置(C语言安装位置),然后是#include"",则在同一文件夹下搜索,找不到再去标准位置搜索。

#define

使用#define来定义常数在C++中是不推荐的,因为#define也只是进行预处理替换,没有进行类型检查。

对此,推荐使用const修饰的变量。

结尾

本文主要介绍了C的两个概念,一个是函数,另一个是预处理。其中函数这块需要注意的是,它的调用顺序,是可以通过编译器进行改变的。另一个是预处理,学会使用#include,也可以做的很好,另外#define不怎么推荐使用,但是仁者见仁智者见智,需要你自己根据项目需求而进行判断。

最后,希望大家能从本文中,获得关于C的函数与预处理的知识,并熟记文中提到的,需要注意的内容,以防止后续开发过程中出现失误。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值