[英]Comma in a macro to pass arguments to a another macro function ( #define a,b )
我正在使用CodeVision對AVR微控制器進行編程。 它是一個C編譯器。
所以這是給我一個錯誤的部分
#defined some_name PORTL,6
SETBIT ( some_name );
錯誤是:宏調用中的參數太少
根據CodeVision對該宏的定義是:可以使用以下宏:
SETBIT(port,b)
sets bit b of port to logic 1 state.
Example:
/* set bit 5 of I/O Port A output to logic 1 for non-XMEGA chips */
SETBIT(PORTA,5);
在閱讀了一些有關宏的內容之后,我對它們的理解還遠遠不夠,我注意到他們使用了
#define comma ,
所以我嘗試了這個,我的新錯誤與舊錯誤相同。
我已經閱讀了一些有關宏的文章,但是它們對我來說是高級的。 所以,請您告訴我解決方案是什么。 您還可以告訴我在哪里可以找到一個逐步教我宏的地方,從其他文章中看到的簡單宏到瘋狂硬宏。
很抱歉,如果答案太明顯了,我不知道如何搜索它來解決我面臨的確切問題。
謝謝
您的問題是擴展順序, some_name
僅被視為SETBIT
唯一參數的一部分
#define SETBIT1(ARG) SETBIT(ARG)
SETBIT1(some_name)
應該管用
您可能會以不同的方式看待它,並因此定義一個宏:
#defined BIT_NAME() SETBIT( PORTL, 6 )
BIT_NAME();
如果需要設置/清除宏,則:
#defined BIT_NAME( b ) (b ? SETBIT( PORTL, 6 ) : CLRBIT( PORTL, 6 ) )
BIT_NAME( 1 );
BIT_NAME( 0 );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.