enum是C++中的宏变量还是整数变量
Is enum a macro or integer variable in C++?
enum
是C++中的宏还是变量?我对C++中的宏感到困惑。C++中宏的定义是什么?
枚举
在c++中有两种类型的enum
:
- 枚举类
- 普通枚举
这是如何声明它们的:
enum Day { sunday, monday, tuesday }; // plain enum
enum class Color { red, green, blue }; // enum class
有什么区别?
enums
-枚举器名称{ sunday, monday, tuesday }
与枚举在同一范围内,它们的值隐式转换为整数和其他类型。
enum class
-枚举器名称{ red, green, blue }
是枚举的本地名称,它们的值不会隐式转换为其他类型(如另一个enum
或int
(
人们普遍认为enum class
比普通enum
更可取,因为它是c++类型系统的一部分,它们不会隐式转换为int
,不会污染命名空间,并且可以正向声明。使用enum class
可以保护您免受普通enum
中可能出现的一些错误的影响。
宏
宏是完全不同的东西。宏由预处理器使用,预处理器是一个在编译之前处理源代码的程序。宏是程序中的一段代码,它被赋予了一些名称。每当编译器遇到此名称时,编译器都会将该名称替换为实际的代码段。#define
指令用于定义宏。例如:
#include <iostream>
// macro definition
#define LIMIT 5
int main()
{
for (int i = 0; i < LIMIT; ++i)
{
std::cout << i << "n";
}
}
0
1
2
3
4
宏的作用也可以类似于函数
#include <iostream>
// macro with parameter
#define AREA(l, b) ((l) * (b))
int main()
{
int a = 10, b = 5, area;
area = AREA(a, b);
std::cout << "Area of rectangle is: " << area;
}
Area of rectangle is: 50
宏被预处理器替换,因此没有函数调用。这可以使代码运行得更快,然而,在c++中,函数可以由编译器内联,这比使用宏更可取。如果不仔细定义和使用宏,它们可能会出现问题。
相关文章:
- enum是C++中的宏变量还是整数变量
- 对已具有设定值的整数变量的加法
- 如何使用C++将字符串中的字符转换为整数变量
- 带有整数的变量参数列表
- 如何将整数分解为不同的变量?
- 如果变量数据包含大于 vector 所有元素的整数,则仅在视觉工作室上接收"矢量下标超出范围"?
- 为什么可以将整数分配给字符串变量?
- 如果用户输入在整数变量中浮动怎么办?
- 如何将整数分配给 char 类型的变量
- 在c++中读取文件时,它如何自动将字符放入字符数组,将数字放入整数变量
- C++:这是使用整数变量作为函数调用指针的正确方法吗
- 如何从字符数组C++中提取2个整数并将它们存储在2个变量中(初学者)
- C++使用cin给变量一个非整数的值
- 如何为具有整数名称的变量设置位集
- C++ 在方程中使用变量;错误:表达式必须具有整数或无作用域枚举类型及其他
- C++ 两个线程,共享几个整数变量
- 使用 size_t 初始化循环变量时的整数下溢
- C 类变量整数具有不同的值
- 未初始化的变量整数'A'哪个内存部分占用内存?
- 寻找QT函数将qint64类型的变量(整数)四舍五入到最接近的十