宏和函数的区别

来源:互联网 发布:java游戏魔幻西游 编辑:程序博客网 时间:2024/04/30 04:19
    • 宏和函数 ,表面上看起来十分相似但俩者却完全不同

    • 宏定义中出现的括号是为了预防运算符优先级的问题

    • 函数和宏的选择,实际上是 时间 空间 的权衡, 宏占了大量的空间,函数占用了大量的时间

    • 宏做的是简单字符串的替换,而不是实际值;函数进行的是参数的传递,参数是有类型的,而宏的使用没有类型的限制

    • 宏产生的代码是内联代码,   在程序中产生的语句,  如果使用了20次宏,则会把20 行代码插入程序;      若使用20次函数,那么程序中只会有一份函数语句的拷贝(内联代码花费的时间比较长)

    • 宏在编译之前进行,先用宏体替换宏名,在进行编译。     而函数在编译之后,在执行的时候才被调用。      所以宏占用的是编译的时间  ,函数占用的是执行的时间。

    • 宏的参数不经过计算直接处理;     函数的调用的将实参的值传递给形参,是通过计算的 。

    • 宏的参数不占内存空间,只是字符串的替换;   函数调用时的参数传递是具体变量之间的信息传递,是占内存的。

    • 函数的调用需要一定的时空开销,宏却不需要。
  • 宏的名字中不能有空格,但是代替字符串中可以有空格。
  • 宏的命名一般约定使用大写字母。
0 0
原创粉丝点击