当前位置:网站首页>The difference between enumeration and define macro
The difference between enumeration and define macro
2022-07-06 22:31:00 【It's Beichen not too PI acridine】
Enumeration and #define The difference between macros
How to use enumeration types
The general definition is as follows :
enum enum_type_name
{
ENUM_CONST_1,
ENUM_CONST_2,
...
ENUM_CONST_n
} enum_variable_name;
enum_type_name Is a custom data type name , and enum_variable_name by enum_type_name A variable of type , That is, we often say enumerating variables . actually enum_type_name A type is a restriction on the value range of a variable , In curly brackets is the range of its value , namely enum_type_name Variable of type enum_variable_name It can only take any value in curly brackets , If the value assigned to the variable of this type is not in the list , An error or warning will be reported .ENUM_CONST_1、ENUM_CONST_2、… 、ENUM_CONST_n, These members are constants , That is what we usually call enumeration constants ( Constants are usually capitalized ).
enum Variable types can also assign values to constant symbols in them , If you do not assign a value, you will add... From the constant assigned with the initial value 1, If there is no assignment , Their values range from 0 Start increasing in sequence 1. For example, use a constant to represent different colors :
enum Color
{
GREEN = 1,
RED,
BLUE,
GREEN_RED = 10,
GREEN_BLUE
}ColorVal;
The values represented by each constant name are :
GREEN = 1
RED = 2
BLUE = 3
GREEN_RED = 10
GREEN_BLUE = 11
Enumeration and #define The difference between macros
1.#define Macro constants are simply replaced in the precompile phase . Enumeration constants determine their values at compile time .
2. Usually in compilers , You can debug enumeration constants , But you cannot debug macro constants .
3. Enumeration can define a large number of related constants at one time , and #define A macro can only define one at a time .
1. Enumeration can do ,#define Macro can do it all ? If you can , So why do we need enumeration ?
answer : Not all of them . On the one hand, enumeration can centrally manage data , Integer data with the same attributes can be stored by enumeration ; In addition, enumeration can realize “ Self increment of value ”( Of course, you can also specify the value of each enumeration ), It's easier to write code , Reduce the chance of mistakes , If you need to add a new information in subsequent maintenance, you do not need to calculate the value of this information .
2.sizeof(ColorVal) What is the value of ? Why? ?
answer : The value is 4,ColorVal An enumeration variable , And the enumeration variable represents an integer
Enumerate variables , Variables defined by enumeration types . Enumeration variable size , That is, the memory occupied by enumeration types . Due to the assignment of enumeration variables , Only one constant in the enumeration structure can be stored at a time . So enumerate the size of variables , The essence is the size of the memory space occupied by the constant ( The constant is int type , The current mainstream compiler is generally 32 Bit machine and 64 In the machine int All of them are 4 Bytes ), The same is true for the memory size of enumeration types .
边栏推荐
- rust知识思维导图xmind
- 中国1,4-环己烷二甲醇(CHDM)行业调研与投资决策报告(2022版)
- MySQL教程的天花板,收藏好,慢慢看
- GD32F4XX串口接收中断和闲时中断配置
- [IELTS speaking] Anna's oral learning record part1
- Improving Multimodal Accuracy Through Modality Pre-training and Attention
- leetcode:面试题 17.24. 子矩阵最大累加和(待研究)
- poj 1094 Sorting It All Out (拓扑排序)
- Export MySQL table data in pure mode
- CocosCreator+TypeScripts自己写一个对象池
猜你喜欢
剪映+json解析将视频中的声音转换成文本
Advantages of link local address in IPv6
Crawler obtains real estate data
Should novice programmers memorize code?
CCNA Cisco network EIGRP protocol
Installation and use of labelimg
NetXpert XG2帮您解决“布线安装与维护”难题
Seata聚合 AT、TCC、SAGA 、 XA事务模式打造一站式的分布式事务解决方案
C# 三种方式实现Socket数据接收
Attack and defense world ditf Misc
随机推荐
Netxpert xg2 helps you solve the problem of "Cabling installation and maintenance"
RESNET rs: Google takes the lead in tuning RESNET, and its performance comprehensively surpasses efficientnet series | 2021 arXiv
【编译原理】做了一半的LR(0)分析器
MySQL数据库基本操作-DML
Build op-tee development environment based on qemuv8
0 basic learning C language - digital tube
Dealing with the crash of QT quick project in offscreen mode
自定义 swap 函数
图像的spatial domain 和 frequency domain 图像压缩
Adavit -- dynamic network with adaptive selection of computing structure
What are the specific steps and schedule of IELTS speaking?
Sword finger offer question brushing record 1
What are the interface tests? What are the general test points?
(18) LCD1602 experiment
2022-07-05 use TPCC to conduct sub query test on stonedb
volatile关键字
做接口测试都测什么?有哪些通用测试点?
机试刷题1
Assembly and Interface Technology Experiment 6 - ADDA conversion experiment, AD acquisition system in interrupt mode
数据处理技巧(7):MATLAB 读取数字字符串混杂的文本文件txt中的数据