배움생활/SoC
C언어 매크로에서의 팁
blueecho
2010. 8. 9. 18:22
개인적으로는 매크로보다는 인라인을 더 좋아하고 있는 저로서는 매크로를 쓰는 경우가 거의 없습니다만.... 다른분들의 프로그램을 보다보면 매크로가 많이 나오더군요.
인라인의 경우는 코드가 커지는 단점때문에 일반적으로 임베디드 프로그래밍에서는 사용을 잘 안한다고 배웠지만 요즘의 임베디드 프로세서의 메모리 크기는 광활하죠.. -_-;;
오늘 보는 책에 나오는 글중에 매크로를 쓰는중에 팁이 될만한 것들이 있기에 옮겨놔 봅니다. (일반적인 매크로 이야기는 생략하겠습니다.)
1. \를 사용할 경우 다수의 라인을 연결할 수 있습니다. (리눅스에서와 같네요. 전 이부분은 리눅스에서 먼저배워서.. ^^;)2. ##을 사용할 경우 매크로의 parameter name을 그대로 사용할 수 있습니다.ex)#define MAC_blueecho(in, out) \f_blueecho(pam1_##in##); \f_blueecho(pam1_##out##); \의 경우MAC_blueecho(go, back);이 다음과 같이 치환됩니다.f_blueecho(pam1_go); \f_blueecho(pam1_back); \3. 위의 예제와 같이 여러 라인을 가지는 경우 {. }로 묶어주는게 좋습니다만 이부분에도 마지막 }후에 ;이 붙게 되므로 do~while(0)로 묶어 주는게 좋습니다. do~while(0)는 아시다시피 한번만 실행됩니다. ^^ex)#define MAC_blueecho(in, out) \do{ \f_blueecho(pam1_##in##); \f_blueecho(pam1_##out##); \}while(0)
다 아시는 것이겠지만 전 몰라서.. ^^;;
알아두면 편하겠죠.
하지만 여전히 저는 인라인 선호자죠.. ^^