回答
const unsigned TimerMax = 0xFFFF;
应该做的很好。除非你需要TimerMax
是一个具体大小。
如果你的int是只有16位(这是由标准允许的),然后呢?你必须至少使它成为一个unsigned int。 – sfstewman
@sfstewman:很对,编辑,谢谢。 –
你不能改变一个#define
宏观到一个变量,无论是const
与否。宏和变量声明属于编译过程的两个完全不同的阶段。宏由预处理器扩展,而变量在语义分析代码时分配。所以,只有在你真正了解你所在的代码的情况下才能这样做。
#defines常常被用作全局常量值,这些值不会被任何其他预处理器表达式引用。因此,您可以将它们替换为常量变量,并且在这些情况下,实际上建议这样做。 –
OP在编写代码(我认为)时想改变它。所以他可以删除宏并放入其他东西。 – deepmax
这将是2个字节,所以一个短。
如下您可以定义它:
const unsigned short TimerMax = 0xFFFF;
你可以只使用一个char(1个字节)或短(2个字节)两种尺寸取决于机实现虽然,如果你宣布它在十六进制想。
unsigned short hex_num = 0xFFFF; // 0xFFFF is 2 bytes
这不是一个字节。一个字节有8位,因此支持0-255的无符号值。
值0xFFFF至少需要一个16位的值。我会做这个成枚举常量,让编译器选择合适的尺寸:
enum { TimerMax = 0xFFFF };
这具有将被视为一个编译时在C和C++常量的优点。此外,无论更好还是更坏,保持宏的属性,你不能把内存位置TimerMax
。
这比使用一个const变量可以说的可读性,但它在C这样一个常见的成语,我不觉得这是一个问题。
- 1. 定义变量导致同一个变量的多个定义
- 2. 定义一个变量
- 3. 定义一个空变量?
- 4. 更改一个变量会改变另一个变量
- 5. 定义一个变量类型另一个变量在Java中
- 6. javascript更改变量定义
- 7. Javascript - 更改变量值是另一个变量定义的一部分
- 8. 从另外两个变量中定义一个变量
- 9. 如何改变像Makefile中CC变量的缺省值
- 10. 定义变量
- 11. 定义变量
- 12. 定义变量
- 13. 定义变量
- 14. 定义变量
- 15. 定义变量
- 16. 变量定义
- 17. 定义变量
- 18. 如何根据另一个变量的值定义变量
- 19. 未定义的变量错误,不应该是一个变量
- 20. 在写变量之前定义一个变量
- 21. 使用变量类型定义另一个变量类型
- 22. 引用另一个变量的Freemarker变量定义
- 23. 未定义的变量当变量被分配一个值
- 24. cout一个类定义的变量
- 25. 在sage中定义一个变量族
- 26. 复杂定义一个变量
- 27. 定义一个TypeScript调试变量
- 28. 在同一行定义两个变量
- 29. 的javascript:定义一个函数变量
- 30. C宏一次定义多个变量
这是两个字节,所以也许 - 'uint16_t TIMER_MAX = 0xFFFF的;' – 0x499602D2
或者只是诠释。取决于它所用的上下文我会说。 –
如果它在'int'之前工作得很好,不妨将它保存为'int'。 – bstamour