先说宏和函数的区别:

1. 宏做的是简单的字符串替换(注意是字符串的替换,不是其他类型参数的替换),而函数的参数的传递,参数是有数据类型的,可以是各种各样的类型.

2. 宏的参数替换是不经计算而直接处理的,而函数调用是将实参的值传递给形参,既然说是值,自然是计算得来的.

3. 宏在编译之前进行,即先用宏体替换宏名,然后再编译的,而函数显然是编译之后,在执行时,才调用的.因此,宏占用的是编译的时间,而函数占用的是执行时的时间.

4. 宏的参数是不占内存空间的,因为只是做字符串的替换,而函数调用时的参数传递则是具体变量之间的信息传递,形参作为函数的局部变量,显然是占用内存的.

5. 函数的调用是需要付出一定的时空开销的,因为系统在调用函数时,要保留现场,然后转入被调用函数去执行,调用完,再返回主调函数,此时再恢复现场,这些操作,显然在宏中是没有的.

内联函数与宏的区别:

1.内联函数在运行时可调试,而宏定义不可以;

2.编译器会对内联函数的参数类型做安全检查或自动类型转换(同普通函数),而宏定义则不会;

3.内联函数可以访问类的成员变量,宏定义则不能;  4.在类中声明同时定义的成员函数,自动转化为内联函数。

c语言函数参数类型检查,内联函数在编译时是否做参数类型检查?相关推荐

  1. 【Kotlin】Kotlin 函数总结 ( 具名函数 | 匿名函数 | Lambda 表达式 | 闭包 | 内联函数 | 函数引用 )

    文章目录 一.函数头声明 二.函数参数 1.默认参数值 2.具名参数 三.Unit 函数 四.TODO 函数抛出异常返回 Nothing 类型 五.反引号函数名 六.匿名函数 七.匿名函数的函数类型 ...

  2. f ajax event,f:ajax onevent不能使用预定义函数,但可以使用内联函数

    我有一个,它提交一个表格.f:ajax onevent不能使用预定义函数,但可以使用内联函数 render=":tblProject" /> 它的工作原理也是应该的,但是当我 ...

  3. 隐式内联函数和显式内联函数

    让一个函数成为内联函数,隐式的为在类里定义函数,显式的则是在函数前加上inline关键字说明. // //  inline1.cpp //  C++primary // //  Created by ...

  4. c++ 函数 -函数重载 -特殊用途的语言特性(默认实参,内联函数 ,constexpr ,assert,NDEBUG)

    c++ 函数 -函数重载 -特殊用途的语言特性 文章目录 c++ 函数 -函数重载 -特殊用途的语言特性 函数重载 定义: 重载和const形参 const_cast 和重载 const_cast 重 ...

  5. volatile,可变参数,memset,内联函数,宽字符窄字符,国际化,条件编译,预处理命令,define中##和#的区别,文件缓冲,位域

     1.volatile:要求参数修改每次都从内存中的读取.这种情况要比普通运行的变量需要的时间长. #include <stdio.h> #include <stdlib.h&g ...

  6. inline函数返回值_C++ 内联函数 inline的详细分析

    1. 什么是内联函数?   就是使用了关键字inline的函数,如 inline int max(int a, int b){ 2. 内联函数有什么作用?   C++在调用函数时,会执行一系列的操作: ...

  7. C++ 11 新特性(十二)函数新特性、内联函数、const详解

    函数后置返回类型 //后置返回类型 auto fun(int, int)->int; 内联函数 在函数定义前增加关键字 inline ,使得该函数变成内联函数 (1) 适用于函数体很小,调用很频 ...

  8. c++学习笔记内联函数,函数重载,默认参数

    c++学习笔记内联函数,函数重载,默认参数 1 inline内联函数 C++中的const常量可以替代宏常数定义,如: const int A = 3;  #define A 3 C++中是否有解决 ...

  9. c语言inline不起作用,C语言inline内联函数学习小结

    //inline(内联)函数:将普通的函数定义为inline函数,可以避免普通函数入栈出栈的开销,它是将函数内的代码直接粘贴到调用处.除此之外,它和普通函数无异. //要成为inline函数必须具备以 ...

最新文章

  1. 【每日一算法】平衡二叉树
  2. arduino蓝牙通讯代码_「Arduino」OLED屏使用教程,显示内容听谁的?我不管,听我的...
  3. 牛客c语言数组,牛客网学习笔记 - C/C++
  4. git cmd 命令在已有的仓库重新添加新的文件夹
  5. 第二章:Android系统与嵌入式开发读书笔记
  6. jquery查找ul属性不是hide,jQuery的ul显示/隐藏功能
  7. java excel添加公式_Java添加、读取Excel公式
  8. 发布sensor_msgs/Range数据
  9. Adobe Illustrator CS6 出现错误报告16
  10. 怎样开启无线热点服务器,在Ubuntu系统的电脑上开启无线热点全攻略
  11. 朋友的感情感想,感谢初中挚友“寻觅心香”提供!希望他能坚强!
  12. ORA-00937: 不是单组分组函数
  13. 选择排序法和冒泡排序法
  14. 传奇游戏SF该如何选择服务器
  15. ET篇:斗地主学习笔记(一)运行Demo
  16. 计算机应用方向的毕业设计,计算机应用(动画方向)毕业设计.pdf
  17. 前缀和与差分那些不得不说的事(一维,二维)公式与图解详细解说
  18. 谷歌身份验证 asp.net core和go的实现
  19. A 股指数历史数据 API 数据接口
  20. SAP MRP设置默认值

热门文章

  1. Android逆向分析工具ded的使用
  2. 内容推荐 | 最新科研资讯与小技巧
  3. GGally包绘制的几个图形
  4. Linux13-bash脚本编程基础及配置文件
  5. GEO数据挖掘(1)引出
  6. 中科院遗传发育所白洋组项目聘用工作人员招聘启事
  7. Nature子刊:使用MinION快速分析早产儿肠道菌群谱并鉴定抗生素抗性致病菌
  8. R语言完美重现STAMP结果图
  9. 50个ggplot2可视化案例
  10. 扩增子分析神器USEARCH简介