在c语言中宏和函数的区别
2017-11-01 21:45
197 查看
关于c语言中的宏,自己来总结一下。
简单来说,宏就是在c语言中简单的文本替换,这是简单的理解,严格的说不是很准确,因为在宏中存在一个文本条件编译,所以有一定的判断,宏是在c语言中的预处理阶段就已经处理完成。
函数呢,就要分为两种了。
第一种封装成库。如果函数在动态库中,那么调用就是在函数运行阶段 。如果在静态库中,就在编译阶段就把相应的头文件copy一份到代码中,这样的代码的效率会有所 的提高,但文件的或者代码量比较大。
第二种就是自己写的函数,这样就是用就调用执行,不用COPY代码。
那么下来咱们具体来总结一下宏与函数的区别:
1. 从代码长度来看:
宏:宏是简单的代码替换,每次使用时都是插入到程序中,除了非常小的宏外,程序会将大幅度增长。
函数:代码只出现与一个地方,每次调用都会到那个地方用同一份代码。
2. 执行速度:
宏:速度相对快。
函数:存在反返回值和函数调用。
3. 可靠度:
宏:在宏的简单文本替换中,是不会计算,所以在遇到操作符优先级问题,有可能会出现错误。
函数:函数有类型所以,有传值计算表达式,结果更容易预测。
4参数类型:
宏:宏与类型无关,只要是合法的,可以是任何参数类型。
函数:函数是与类型有关的,如果参数类型不同,就需要使用不同的函数,即使执行任务是相同。
简单来说,宏就是在c语言中简单的文本替换,这是简单的理解,严格的说不是很准确,因为在宏中存在一个文本条件编译,所以有一定的判断,宏是在c语言中的预处理阶段就已经处理完成。
函数呢,就要分为两种了。
第一种封装成库。如果函数在动态库中,那么调用就是在函数运行阶段 。如果在静态库中,就在编译阶段就把相应的头文件copy一份到代码中,这样的代码的效率会有所 的提高,但文件的或者代码量比较大。
第二种就是自己写的函数,这样就是用就调用执行,不用COPY代码。
那么下来咱们具体来总结一下宏与函数的区别:
1. 从代码长度来看:
宏:宏是简单的代码替换,每次使用时都是插入到程序中,除了非常小的宏外,程序会将大幅度增长。
函数:代码只出现与一个地方,每次调用都会到那个地方用同一份代码。
2. 执行速度:
宏:速度相对快。
函数:存在反返回值和函数调用。
3. 可靠度:
宏:在宏的简单文本替换中,是不会计算,所以在遇到操作符优先级问题,有可能会出现错误。
函数:函数有类型所以,有传值计算表达式,结果更容易预测。
4参数类型:
宏:宏与类型无关,只要是合法的,可以是任何参数类型。
函数:函数是与类型有关的,如果参数类型不同,就需要使用不同的函数,即使执行任务是相同。
相关文章推荐
- C语言-- gets()和scanf()函数的区别
- C语言 gets()和scanf()函数的区别
- C语言中各种输入函数之间的区别
- C语言带参宏定义和函数的区别
- C语言 gets()和scanf()函数的区别
- 函数式宏定义与普通函数的区别?C语言宏定义和宏定义函数 ?
- c语言中的return函数、exit()函数,以及二者的区别
- C语言文件操作函数——fopen和freopen的区别
- C语言 gets()和scanf()函数的区别
- 【C语言】宏和函数的区别
- C语言-函数指针与函数名的区别
- C语言中值得深入知识点----数组做函数参数、数组名a与&a区别、数组名a的"数据类型"
- C++ c++与C语言的区别(struct类型的加强,函数-变量类型加强,bool类型)
- C语言 gets()和scanf()函数的区别
- c语言中用static修饰的函数与普通函数的区别
- C语言 gets()和scanf()函数的区别
- C语言 gets()和scanf()函数的区别
- C语言:函数指针和指针函数的区别
- C语言 gets()和scanf()函数的区别
- C语言中的exit函数 以及他与return函数的区别