blueecho's collection

누군가에게 "당신은 무엇을 잘하십니까?"라는 질문을 들었을때 바로 대답할것을 만들어보자~!!
        
분류 전체보기 (267)
NeWs (21)
배움생활 (107)
취미생활 (118)
끄적끄적 (5)
인생설계 (12)
Wish list (4)
솔카당 영화감상 Fedora 일본소설 리눅스 연구실생활 자전거 사진 지름신 연구실 생활
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
블로그 이동하였습니다.

 

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

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' 카테고리의 다른 글

Setup/Hold violation  (0) 2012.02.23
유지보수가 어렵게 코딩하는 방법  (0) 2011.12.16
링커 스크립트  (0) 2010.07.26
verilog 2001에서 배럴쉬프터 짜기....  (0) 2010.07.09
infer_mux 지정자  (0) 2010.07.06


 
     
- Home
- Guestbook
- Manage - Location
- Tag - Post