C/C++ 将定义更改为变量
C/C++ change a define to a variable
简单的问题:
如何将 #define TIMER_MAX 0xFFFF ; 更改为常量变量?我不确定要使用什么类型。是字节吗?
谢谢
它需要 2 个字节,uint16_t
个是合适的:
#include <cstdint>
const uint16_t TimerMax = 0xFFFF;
const unsigned TimerMax = 0xFFFF;
应该做得很好。 除非您需要TimerMax
具有特定大小。
这不是一个字节。 一个字节有 8 位,因此支持 0-255 之间的无符号值。
值0xFFFF至少需要 16 位值。 我会把它变成一个枚举常量,让编译器选择合适的大小:
enum { TimerMax = 0xFFFF };
这样做的好处是,它将在 C 和 C++ 中被视为编译时常量。 无论好坏,它还维护了您无法获取TimerMax
的内存位置的宏属性。
它可以说比使用 const 变量的可读性差,但它在 C 中是如此常见,以至于我不认为这是一个问题。
不能将#define
宏更改为变量,无论它是否const
。 宏和变量声明属于编译过程的两个完全不同的阶段。宏由预处理器扩展,而变量在代码的语义分析期间分配。因此,只有在您真正了解您正在使用的代码时才这样做。
这将是 2 个字节,所以很短。
您可以按如下方式定义它:
const unsigned short TimerMax = 0xFFFF;
你可以只使用 char(1 字节)或 short(2 字节),这两种大小都取决于机器实现,如果需要,可以用十六进制声明它。
unsigned short hex_num = 0xFFFF; // 0xFFFF is 2 bytes
相关文章:
- 用C++中的一个变量定义一个常量
- 变量定义到C++布尔值转换
- 未声明的标识符错误,但变量定义正确 (?)
- C++多线程程序:变量定义为类成员的隔离错误
- 将变量定义为静态时,为什么可以多次定义它
- 初始值设定项列表与构造函数赋值与变量定义
- 如何根据传递给函数的变量定义特征矩阵大小
- C++ 描述如何使用来简化变量定义
- 如何转发声明依赖于变量定义的类,而变体定义又依赖于模板化类?
- 是否修改其声明语句中的变量定义良好
- 使用类的其他成员变量定义类的成员变量数组
- 是否可以通过全局变量定义具有可变参数数的函数中的参数数量
- 元组 std::get() 不适用于变量定义的常量
- 全局使用变量定义和C 声明
- C++变量定义中的易失性类型量词位置
- 将变量定义为数组和正确的语法
- 多个,包括具有变量定义的头文件
- 调用构造函数,并将成员作为参数解析为变量定义
- 逗号分隔变量定义中关系前的序列
- 如何使用命名变量定义常量右值引用参数的默认值