티스토리 뷰
커널 소스를 보게 되면 정신이 혼미해집니다.
수많은 매크로에 알아먹을 수 없는 문자들..
하지만 저도 잘 보지는 못하지만 자세히 들여다 보면 #if ~ #endif가 많이 등장하는 것을 볼 수 있으며
그로 인해 실제 코드는 얼마 안되는 것을 알 수 있습니다.
#if 계열 매크로에 대해 간단히 정리해 보았습니다.
1.
#endif
#if (A == B)
...#endif
A와 B가 같을 때 매크로 사이의 내용을 실행하겠다는 의미이며 기본적인 if 구문과 동일합니다.
2.
#if (A == B)
...
#elif ( A== C)
...
#endif
...
#elif ( A== C)
...
#endif
이것 또한 직관적으로 받아들을 수 있습니다. #elif는 #else if의 줄임말으로써 편히 사용할 수 있습니다.
그렇다면 이러한 것을 어디서 사용할 수 있을까요?
저는 디버깅 관련 코드(출력문)를 매크로 사이에 넣어놓고,
실행 모드에 관한 값을 매크로로 정의한 뒤, 그 값을 활성화 시키면 디버깅코드를 실행 하도록 하고
활성화 되지 않았을 경우에는 매크로 구문을 무시하도록 합니다.
어색해서 그렇지 사용하다 보면 매우 편하더라구요.
그래서 일반적으로 #if(0)과 같은 형식으로도 많이 사용합니다. 항상 실행하지 않겠다는 뜻이며
실행하고 싶을 때는 0의 값을 1로 바꾸어 주면 되겠죠.
잘 활용해 보시길!
'기타 > 기타' 카테고리의 다른 글
[php] 한글 깨짐 현상 (0) | 2011.01.09 |
---|---|
[기타] 공유기(ipTime) 웹 서버 설정 (0) | 2011.01.02 |
[C#] Native API(Win32 API) 사용하기.(DllImport) (0) | 2010.11.27 |
[C/Linux] gettimeofday()로 마이크로초 단위 측정하기 (0) | 2010.11.21 |
[Tip/Error] expected declaration or statement at end of input 해결법 (0) | 2010.11.21 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 알고리즘
- 통계학습
- 카타르 음주
- operating systems
- 이산수학
- 리눅스
- Machine Learning
- 머신러닝
- reversing
- 자료구조
- statistical learning
- 운영체제
- 데이터 사이언스
- 대학원
- 개발
- 리버싱
- Data Structure
- 데이터 과학
- 카타르
- 기계학습
- 리버스엔지니어링
- linux
- android
- 자바
- Algorithms
- Data Science
- 안드로이드
- java
- Reverse Engineering
- Discrete Mathematics
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함