2013-10-22 82 views
3

我想縮短變量名,所以不是這樣的: FPData.Temps.T.Solar.ValAnsi c預處理程序:我可以將宏名稱和參數連接成單個變量名嗎?

我想使用:

TEMP_Solar.Val 

,並定義宏:

#define TEMP_ FPData.Temps.T. 

但如果我把空間它只能之間:

TEMP_ Solar.Val  

編譯好,但我想用這個

TEMP_Solar.Val 

可能嗎?我知道我可以使用宏和參數「TEMP_VAL(太陽能)」得到解決,但想保持它的簡單,線性串聯......

+0

不知道這是可能的。預處理器應該怎麼做,如果你會寫'_TEMP_DEFINE_'這樣的東西? – Alex

+0

我認爲'##'是在C或cpp或C++源代碼中創建新標識符/標記的唯一方法。 – vrdhn

+1

不要忘記_upclick_,**或**通過任何適用於您的響應來單擊_answered_檢查。 – ryyker

回答

3

這是因爲預處理器,它處理的宏,只承認自己的標識符。當你使用例如TEMP_Solar這是和TEMP_不同的標識符。

預處理甚至可以用一個簡單的strcmp找到其宏,所以不能無子串也不可能有大小寫差異。

1

最明顯和最簡單的解決方案:

#define TEMP FPData.Temps.T 

TEMP.Solar.Val 

(你不能,不應該改變結構成員的實際變量名。)

+0

我喜歡它...感謝您的迴應和想法... – user2152780

+0

@ user2152780如果你想說謝謝,放棄投票。 – Gangadhar

相關問題