【C++】第四节——宏和内联函数

文章目录

      • 为什么
        • 宏函数存在副作用
      • 内联函数
      • 为什么
        • 内联函数特性
          • 补充
        • debug和release 的区别
    • Debug 版本
    • Release 版本

为什么

【C++】第四节——宏和内联函数_第1张图片

为什么a的值已经被改变为100了,但是输出了时候还是10?

  • 在c++中,被const 修饰的变量一般被称为常量,且具有宏替换的作用

    • 编译阶段,在所有使用const常量的位置,用常量的值代替该常量(注意:&常量除外)
    • 代码必须经过预处理,编译,汇编,链接才可以执行,所以在编译阶段,编译器就直接将a替换成了10,所以输出a也是10,但是一个代码走完程序后,a被修改成了100
  • 在C语言中,const修饰的变量不能称为常量,只能称为不能被修改的变量

【C++】第四节——宏和内联函数_第2张图片

  • 宏的替换发生在预处理阶段,不会进行类型检测

  • const修饰的常量替换发生在编译阶段,const修饰的常量是有类型的,因此会参与类型检测

所以在c++中更推荐用const修饰的常量来取代C语言中的宏,因为const修饰的内容已经是常量了,且会参与类型检测,比宏更安全

宏函数存在副作用

1.不会类型检测

2.有一定副作用

3.编写要十分小心,少了一个括号,结果大相径庭

4.不能调试

例如这个例子

#define Max(a, b

你可能感兴趣的:(c++,c++,c语言,开发语言)