宏定义、const变量、枚举的区别

1.宏定义是在预处理阶段进行展开;cnost变量是在编译运行阶段使用

2.宏定义没有类型,不做任何类型检查,仅仅是进行展开;const修饰的变量具有具体的类型,编译阶段执行检查

3.宏定义在文件中有多少次就展开多少次,不会分配内存空间;const修饰的变量会在内存中分配空间

1.枚举属于常量;但宏定义不是常量

2.枚举常量是实体的一种;但宏定义不是实体

3.枚举具有类型,但宏定义没有类型,枚举与普通变量有作用域和值,但宏定义没有,它是一种预处理替换

时间: 2024-10-24 21:27:18

宏定义、const变量、枚举的区别的相关文章

C++内联函数、宏定义和普通函数的区别

C++内联函数.宏定义和普通函数的区别? 宏定义:在预处理阶段进行简单的文本替换,不会进行参数类型检查: 内联函数:在编译器的时候进行代码插入,编译器会在每次调用内联函数的地方直接将内联函数的内容展开,这样可以省去函数压栈和出站的开销提高效率.会进行参数                  类型检查: 普通函数:在函数调用时,跳转到函数地址执行代码: 原文地址:https://www.cnblogs.com/dingou/p/10549225.html

宏定义 #define与typedef的区别。

#include <stdio.h> #define TP1 char* typedef char*  TP2; int main(void){    TP1 a,b;    TP2 x,y; printf("a=>%d,b=>%d\n",sizeof(a),sizeof(b));    printf("x=>%d,y=>%d\n",sizeof(x),sizeof(y));

&lt;28&gt;【了解】10-枚举类型介绍及定义+【掌握】11-枚举变量变量定义和使用+【掌握】13-typedef定义新的类型+【掌握】15-宏的概念及无参宏定义方法+【掌握】16-有参宏定义和使用方法+【掌握】17-应用:使用有参宏求最大值+【掌握】18-typedef和#define的区别

[了解]10-枚举类型介绍及定义 枚举类型: C语言提供了一个种类型,这种类型的变量的取值被限定在一定的范围之内了 枚举类型的定义: enum 枚举类型名{ 枚举值1,枚举值2,.... }; 举例: 定义一个变量,保存一周的第几天 enum weekday{ zhouyi,zhouer,zhousan,zhousi,zhouwu ,zhouliu,zhouri }; 定义iPhone手机的颜色 关于枚举类型元素的命名习惯 enum iColor{kIcolorWhite,kIcolorBlac

const和宏定义的区别!!!

宏的命名规范:一般以项目前缀开头,key结尾. #开头表编译. 宏的用法:1.定义常用字符串. 2.定义一段代码. const与宏的区别:1.编译时刻:宏-预编译    const-command+b(编译阶段)编译. 2.宏不会检查代码错误,只是替换,但是const会编译报错. 3.宏的好处:定义代码或字符串.方法.参数 const不能.  坏处:使用大量宏,容易造成编译时间久,每次都需要重新替换. const作用:限制类型 1.const仅仅用来修饰右边的变量(基本数据变量p,指针变量*p)

宏定义(#define)和常量(const)的区别

最近开始准备一边做实验室的研究,一边记录一些遇到的编程中的小知识点.今天在测试对矩阵进行SVD分解时,需要定义矩阵的行和列的大小,我习惯性的用宏定义来定义了这两个变量,在运行的时候,就开始思考宏定义和常量之间有些什么样的分别. 参考了一些别人的说法,自己在这里做一个小小的总结. 类型和安全检查不同 宏定义是字符替换,没有数据类型的区别,同时这种替换没有类型安全检查,可能产生边际效应等错误: const常量是常量的声明,有类型区别,需要在编译阶段进行类型检查 编译器处理不同 宏定义是一个“编译时”

iOS define 宏定义 和 const定义常量区别

const   const 是c++中的修饰符.  c++中常用来定义常量,修饰左值. #define 宏定义语句, 在预处理阶段直接做文本替换,不做类型检查. 它们之间的最大区别: 1.  对于const 变量,系统只给了一个相应的内存地址,而#define则是给出了一个立即数.因为const变量是存放在内存的静态区域中,所以在程序运行过程中const变量只有一个拷贝,而#define 所定义的宏变量却有多个拷贝,所以宏在程序运行过程中所消耗的内存要比const变量的大得多.#define所定

宏定义 #define 和常量 const 的区别

宏定义 #define 和常量 const 的区别 类型和安全检查不同 宏定义是字符替换,没有数据类型的区别,同时这种替换没有类型安全检查,可能产生边际效应等错误: const常量是常量的声明,有类型区别,需要在编译阶段进行类型检查 编译器处理不同 宏定义是一个"编译时"概念,在预处理阶段展开,不能对宏定义进行调试,生命周期结束与编译时期: const常量是一个"运行时"概念,在程序运行使用,类似于一个只读行数据 存储方式不同 宏定义是直接替换,不会分配内存,存储与

程序猿之---C语言细节28(const变量初始化、数组大小用const变量细节、const变量与#define宏、volatile修饰)

主要内容:const变量初始化.数组大小用const变量细节.const变量与#define宏.volatile修饰 一.const变量初始化时必须赋值 二.const变量在C++中可以做数组大小元素.在C中不行,因为它是变量 三.const和#define区别:内存分配 四.volatile修饰一些变量:易被操纵系统.硬件.多线程修改的变量 #include <stdio.h> int main() { /* 测试1 */ const int b; // 不初始化会报错 // b = 2;

宏定义和枚举

宏定义: 在代码的开头用一个字符串代替一个数据,有三个方面的好处 1.让一些数据有意义 #define  kOUT -1 #define  kAPPSecret  kdjghhgf #define  kAPPKey  123456 2.使用简便,类似于内敛函数的意思 #define  kAdd(a,b)  ((a)+(b)) #define  kmultiple(a,b)  ((a)*(b)) 3.输出日志的开关 #if  1 #define  Debug(x)  printf("%s\n&qu