Your SlideShare is downloading. ×
0
매크로, 인라인 함수란?<br />
prefix와 suffix가 제거된 함수<br />
오버헤드!!!<br />일반적인 함수<br />Func()<br />prefix<br />Main()<br />…<br />prefix<br />suffix<br />Func()<br />suffix<br />Main(...
인라인 함수 대매크로<br />
매크로<br /><ul><li>상수 선언 #define D3DX_PI 3.141592…
매크로 함수   #define clamp(a) 	if…
자료형에 자유로운 처리</li></li></ul><li>매크로의 단점<br /><ul><li>컴파일 오류가 생성되지 않는다.
구현이 상대적으로 모호하다.
치환의 개념</li></ul>컴파일 시간 전에 확장 디버깅 불가능<br /><ul><li>우선 순위를 고려해야 한다.  예측 불가능한 결과 도출</li></li></ul><li>#define square(x) (x*...
#define max(a,b)  <br />((a)>(b) ? (a):(b))<br />max( ++x, y )      x == 5, y == 3<br />왜 결과가 7인가요?<br />
매크로는 의외로 부작용이 많군?<br />
그러니 inline을 사용하라<br />
Inline <br /><ul><li>c++에 새롭게 추가된 키워드
오버헤드 없는 함수 생성 가능
일반 함수의 구현과 동일
컴파일 시간에 인라인 확장 디버깅 가능
Upcoming SlideShare
Loading in...5
×

[Gpg2권 조진현] 1.2 인라인 함수 대 매크로

1,327

Published on

Published in: Technology, Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,327
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "[Gpg2권 조진현] 1.2 인라인 함수 대 매크로"

  1. 1.
  2. 2. 매크로, 인라인 함수란?<br />
  3. 3. prefix와 suffix가 제거된 함수<br />
  4. 4. 오버헤드!!!<br />일반적인 함수<br />Func()<br />prefix<br />Main()<br />…<br />prefix<br />suffix<br />Func()<br />suffix<br />Main()<br />Func()<br />pascal방식<br />cdecl방식<br />
  5. 5. 인라인 함수 대매크로<br />
  6. 6. 매크로<br /><ul><li>상수 선언 #define D3DX_PI 3.141592…
  7. 7. 매크로 함수 #define clamp(a) if…
  8. 8. 자료형에 자유로운 처리</li></li></ul><li>매크로의 단점<br /><ul><li>컴파일 오류가 생성되지 않는다.
  9. 9. 구현이 상대적으로 모호하다.
  10. 10. 치환의 개념</li></ul>컴파일 시간 전에 확장 디버깅 불가능<br /><ul><li>우선 순위를 고려해야 한다.  예측 불가능한 결과 도출</li></li></ul><li>#define square(x) (x*x) <br /> square( 2+1 )  결과는 5<br />
  11. 11. #define max(a,b) <br />((a)>(b) ? (a):(b))<br />max( ++x, y ) x == 5, y == 3<br />왜 결과가 7인가요?<br />
  12. 12. 매크로는 의외로 부작용이 많군?<br />
  13. 13. 그러니 inline을 사용하라<br />
  14. 14. Inline <br /><ul><li>c++에 새롭게 추가된 키워드
  15. 15. 오버헤드 없는 함수 생성 가능
  16. 16. 일반 함수의 구현과 동일
  17. 17. 컴파일 시간에 인라인 확장 디버깅 가능
  18. 18. 인라인 함수 호출 부분에 코드가 삽입 되는 개념.</li></li></ul><li>Inline 함수 사용시 주의할 사항<br /><ul><li>코드 크기가 적어야 한다.</li></ul>page fault 발생 가능성<br />
  19. 19. __inline<br />__forceinline<br />
  20. 20. 생활 속의 매크로 기법들<br />#define USES_CONVERSION <br />int_convert = 0; <br />(_convert); <br />UINT _acp = ATL::_AtlGetConversionACP() /*CP_THREAD_ACP*/; <br />(_acp); <br />LPCWSTR _lpw = NULL; <br />(_lpw); LPCSTR _lpa = NULL; (_lpa)<br />void MyTest(){ USES_CONVERSION; std::string s1("abc"); std::wstring s2(A2W(s1.c_str())); s1 = W2A(s2.c_str());}<br />
  21. 21. 생활 속의 inline<br /><ul><li>Accessor( get/set )
  22. 22. 간단한 수치 계산( Update )</li></li></ul><li>
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×