面试题-说明const与#define的特点与区别
2018-01-25 21:20
351 查看
说明const和#define的特点及区别
我们首先要认识到源程序文件(file.c)到生成可执行文件(file.exe)有四个阶段,预处理、编译、汇编、链接
1.编译器处理方式不同
#define是在预处理阶段
const是在编译阶段运行使用
//这边补充一点预处理器根据以#开头的命令,修改原始的程序。比如我们常见的#include <stdio.h>命令告诉处理器读取系统头文件stdio.h的内容,并把它直接插入程序文本中。咱们的#define也是,仅仅是单纯的文本替换
2.类型跟安全检查不同
#define没有数据类型,不做任何类型检查,仅仅是展开替换
const常量有具体的数据类型,编译运行时会执行类型检查
3.空间分配不同
#define常量在实际程序中只是一个常数,并不分配空间
const常量存在于程序的数据段,并在堆栈上分配了空间。
我们首先要认识到源程序文件(file.c)到生成可执行文件(file.exe)有四个阶段,预处理、编译、汇编、链接
1.编译器处理方式不同
#define是在预处理阶段
const是在编译阶段运行使用
//这边补充一点预处理器根据以#开头的命令,修改原始的程序。比如我们常见的#include <stdio.h>命令告诉处理器读取系统头文件stdio.h的内容,并把它直接插入程序文本中。咱们的#define也是,仅仅是单纯的文本替换
2.类型跟安全检查不同
#define没有数据类型,不做任何类型检查,仅仅是展开替换
const常量有具体的数据类型,编译运行时会执行类型检查
3.空间分配不同
#define常量在实际程序中只是一个常数,并不分配空间
const常量存在于程序的数据段,并在堆栈上分配了空间。
相关文章推荐
- const与#define的特点与区别
- #define 与 const 的特点及区别
- const和#define的特点和区别
- 宏定义(#define)和常量(const)的区别
- C语言 #define 与 const的区别
- const和#define宏定义的区别
- #define与const的区别
- 区别 const、#define、typedef
- 【iOS开发】#define和const定义的变量,有什么区别?
- #define与const的区别
- CONST 和#define的区别
- 宏定义(#define)和常量(const)的区别
- C++中static_cast、const_cast、reinterpret_cast的用法举例,附带举例说明强制类型转换时int和int&的区别
- const 与 #define 区别
- 定义常量 const 和 #define 区别1
- const 与#define区别
- #define和const的区别
- const 和 #define 的区别
- #define、const、enum的用法及区别
- 整理:#define和typedefine的区别 以及const修饰指针的用法