回答
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