C/C++ 将定义更改为变量

C/C++ change a define to a variable

本文关键字:变量 定义 C++      更新时间:2023-10-16

简单的问题:

如何将 #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