我怎樣才能在編譯時測試宏參數的字符串值中Ç?參數在C預檢查
我正在爲微控制器編寫包裝宏,其格式爲C(GNU)。
我有一些宏,像這樣工作:
#define _ReadBits(port, mask) (PORT ## port) & (mask)
#define ReadBits(portmask) _ReadBits(portmask)
#define SWITCH D, (1<<7)
這樣我可以說:
foo = ReadBits(SWITCH);
,我會得到
foo = PORTD & (1<<7);
那偉大工程。我想擴大這些做這樣的事情:
#define _ConfigAnalog(port, mask) BUILD_BUG_ON(port != B); AD1PCFGCLR = (mask)
#define ConfigAnalog(portmask) _ConfigAnalog(portmask)
也就是說,我希望發生編譯時錯誤,如果參數port
不B
(因爲這個微控制器可以配置只有端口B
作爲模擬)。
是否有某種方式在Ç做到這一點?
避免使用以下劃線接着是其他下劃線或大寫字母開頭的標識符(例如,避免'__this'和'_This'),因爲這樣的標識符被保留用於執行。 – dreamlax
@dreamlax:謝謝;將修復。 –
這樣做不會**測試宏參數的任何「字符串值」。它測試一個標識符名稱。如果我的回答中的低估是屬於你的,我認爲重新考慮你的問題(我引用的問題)可能沒有儘可能清楚地說明是公平的。 – Jens