0
我正在使用XC8編譯器開發帶PIC的小型嵌入式應用程序。在XC8設置的銷(輸出或輸入)的使用,程序員應當執行這樣的指令:如何在#define中評估逗號
TRISAbits.RA0 = 1;
特別
:
- TRIS在寄存器的前綴(常數)
- A是端口
- 比特的後綴(常數)
- RA0是銷的名稱
我想要做的是與人類可讀的名稱來定義所有的引腳,如:
#define LED_1 A,RA0
#define LED_2 A,RA1
#define SWITCH_1 B,RB5
...
,並定義了一些宏像這樣使用SET_OUTPUT
或SET_INPUT
:SET_OUTPUT(LED_1)
。
我試圖做的就是這兩個宏:
#define SET_INPUT(port, pin) TRIS ## port ## bits. ## pin ## = 0
然而,先前定義的常量裏面的逗號沒有擴大,解釋爲一個單獨的參數。我也試過:
#define SET_INPUT(X) SET_INPUT_(X ## "")
#define SET_INPUT_(port, pin) TRIS ## port ## bits. ## pin ## = 0
沒有成功。
本質上是這個問題的反面:Comma in C/C++ macro
是否存在一個解決方案或更方便的方式來做到這一點?
在你說的應該是開始'= 1',但你試過'= 0'在您的宏,那是什麼呢? –