C언어 매크로에서의 팁
배움생활/SoC |
2010/08/09 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)
다 아시는 것이겠지만 전 몰라서.. ^^;;
알아두면 편하겠죠.
하지만 여전히 저는 인라인 선호자죠.. ^^
'배움생활 > SoC' 카테고리의 다른 글
| 유지보수가 어렵게 코딩하는 방법 (0) | 2011/12/16 |
|---|---|
| C언어 매크로에서의 팁 (0) | 2010/08/09 |
| 링커 스크립트 (0) | 2010/07/26 |
| verilog 2001에서 배럴쉬프터 짜기.... (0) | 2010/07/09 |
| infer_mux 지정자 (0) | 2010/07/06 |
| H.264의 대항마가 나오네요.... (0) | 2010/05/24 |
