您的位置:首页 > 编程语言 > C语言/C++

宏和函数的区别

2015-11-02 23:41 211 查看
#define宏和函数的区别如下:
代码长度:#define宏每次使用时,宏代码都被插入到程序中,除了非常小的程序外,宏代码将大幅度增长;
函数代码只出现于一个地方,每次使用这个函数时,都调用那个地方的同一份代码
执行速度:#define宏更快;函数存在函数调用/返回的额外开销

操作符优先级:宏参数的求值是在所有周围表达式的上下文环境里,除非他们加上括号,否则邻近操作符的优先级可能会产生不可预料的结果;函数参数只在函数调用时求值一次,它的结果值传递给函数,表达式的求值更容易预测

参数求值:参数每次使用宏定义时,它们都将重新求值,由于多次求值具有副作用的参数可能会产生不可预料的结果;
参数在函数调用前只求值一次,在函数中多次使用参数并不会导致多种求值过程,参数的副作用并不会造成任何问题

参数类型:宏与类型无关。只要对参数的操作是合法的,它可以使用任何参数类型;函数的参数是与类型有关的。如果参数的类型不同,就需要使用不同的函数,即使它们执行的任务是相同的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息