page contents

#define和const有什么区别?

轩辕小不懂 发布于 2021-12-30 15:06
阅读 671
收藏 0
分类:C/C++开发
  • c
  • c++
  • 2778
    Nen
    Nen
    - 程序员

    编译器处理方式不同:#define宏是在预处理阶段展开,不能对宏定义进行调试,而const常量是在编译阶段使用;

    类型和安全检查不同:#define宏没有类型,不做任何类型检查,仅仅是代码展开,可能产生边际效应等错误,而const常量有具体类型,在编

    译阶段会执行类型检查;

    存储方式不同:#define宏仅仅是代码展开,在多个地方进行字符串替换,不会分配内存,存储于程序的代码段中,而const常量会分配内存,

    但只维持一份拷贝,存储于程序的数据段中。

    定义域不同:#define宏不受定义域限制,而const常量只在定义域内有效。

    请先 登录 后评论