【发布时间】:2013-10-25 19:34:53
【问题描述】:
简单的问题:
你如何改变 #define TIMER_MAX 0xFFFF ;成一个常量变量?我不确定要使用什么类型。是字节吗?
谢谢
【问题讨论】:
-
那是两个字节,所以也许 -
uint16_t timer_max = 0xFFFF; -
或者只是int。取决于我所说的上下文。
-
如果之前作为
int运行良好,不妨保留为int。 -
@bstamour 它从来不是
int。宏没有固有类型。在预处理器遇到TIMER_MAX的每个地方,该字符串都会被0xFFFF替换。编译器永远不会看到TIMER_MAX,只会看到常量0xFFFF,因此它会将适当的强制规则等应用于该常量。 -
@sfstewman:它有一个类型,它是 int。整数字面量(即使是用十六进制表示的字面量)都是 int 类型,除非以 u 和或 l 等为后缀。