[英]Redefinition error when using ifndef when alias is defined like “const int alias = variable” instead of #define
簡而言之, const UInt8 HP = hp;
沒有引入#ifndef HP
可以對其作出反應的預處理器標識符。
通過#define
預處理器指令定義的標識符和變量的定義是兩個不同的東西。 預處理器指令在編譯器分析代碼並識別變量、函數等之前被擴展。因此,變量的定義不能#define
預處理器的標識符,因為此時已經進行了預處理。
你可以通過寫作來克服這個...
#ifndef HP_VAR
#define HP_VAR
const UInt8 HP = hp;
#endif
您混淆了預處理器和編譯器。 聲明 C++ 變量不會在預處理器中定義任何內容。 讓我們逐行看:
#ifndef HP
這由預處理器處理。 失敗的唯一方法是通過#define HP
或類似方法。 C++ 編譯器永遠不會看到這一行。
const UInt8 HP = hp;
這是由 C++ 編譯器在預處理器完成其工作后處理的。 預處理器忽略這一行。
沒有直接的方法可以做你想做的事; 理想的解決方案是以永遠不會多次聲明HP
的方式安排您的項目。 它應該在單個翻譯單元中聲明,並在 header 文件中顯示為extern
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.