作者DrStein (啤酒肚)
看板C_and_CPP
標題Re: [問題] 巨集可以用for loop嗎?
時間Fri May 13 12:55:52 2011
※ 引述《think12381 ()》之銘言:
: 請問各位 我想用個巨集去包一個小函數
: 如下
: #define Set_wake_Timer (A)\
: {
: for(k = 0; k<A; k++) \
: for(i = USB_WAKE_UP_PULSE*8; i>0; i--) \
: }
: 之後我呼叫在一個函數中
: Set_wake_Timer(30);
: 為什麼一直出現 syntax error near 'for'
: ' ='
: missing ; before '<'
: 感謝各位
這樣寫 很不好:
假設補完跳脫字元 (\) 讓程式通過編譯
如下調用 Set_wake_Timer :
int A;
A = 20;
:
:
Set_wake_Timer(A++);
這樣 Set_wake_Timer(A++)會被展開為:
{
for(k = 0; k<A++; k++)
for(i = USB_WAKE_UP_PULSE*8; i>0; i--)
}
每做個外循環 A的值都加一
就是迴圈永不結束
老實寫寫成函數吧
若是用C++ 可以多個 inline的關鍵字增加效能
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 59.120.158.204
→ loveme00835:C99 就有 inline 05/13 12:58
→ angleevil:好愛c99解決很多c++轉到這來的麻煩,還有boolean 05/13 13:57