C언어 매크로에서의 팁

배움생활/SoC | 2010/08/09 18:22
Posted by blueecho
개인적으로는 매크로보다는 인라인을 더 좋아하고 있는 저로서는 매크로를 쓰는 경우가 거의 없습니다만.... 다른분들의 프로그램을 보다보면 매크로가 많이 나오더군요.
인라인의 경우는 코드가 커지는 단점때문에 일반적으로 임베디드 프로그래밍에서는 사용을 잘 안한다고 배웠지만 요즘의 임베디드 프로세서의 메모리 크기는 광활하죠.. -_-;;
오늘 보는 책에 나오는 글중에 매크로를 쓰는중에 팁이 될만한 것들이 있기에 옮겨놔 봅니다. (일반적인 매크로 이야기는 생략하겠습니다.)

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

블로그 이미지

blueecho

누군가에게 "당신은 무엇을 잘하십니까?"라는 질문을 들었을때 바로 대답할것을 만들어보자~!!

카테고리

분류 전체보기 (488)
NeWs (20)
배움생활 (97)
취미생활 (116)
끄적끄적 (239)
인생설계 (12)
Wish list (4)