当前位置:网站首页>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

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 .

原网站

版权声明
本文为[It's Beichen not too PI acridine]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/187/202207061439468848.html