리눅스/커널2012. 2. 23. 00:43

출처: http://www.ibm.com/developerworks/linux/library/l-gcc-hacks/


GCC 확장(?)의 하나로서, GCC는 변수에 대한 참조를 통해서 타입을 확인할 수 있다. 이런 방법을 흔히 'generic programming'이라고 부르며 비슷한 기능을 제공하는 것을 현재 쓰이는 언어들에서 찾아 볼 수 있다.[1]
Linux의 경우, typeof를 사용하여 타입 종속적인 작업, (예를 들어 min/max 를 구별)을 할 수 있다.

간단한 예를 들어보자.(/linux/include/linux/kernel.h)

보이는 바와 같이 _min1은 x가 어떤 타입이냐에 따라서 그 타입을 가지게 된다; _min2 역시 y에 따라 타입이 달라진다. 이렇게 타입을 가지게 되므로 크기를 비교할 수 있게 되며, 어떠한 타입이 들어와도 대응할 수 있게 된다.

[1] 제네릭 프로그래밍(Generic programming)은 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있는 기술에 중점을 두어 재사용성을 높일 수 있는 프로그래밍 방식이다

'리눅스 > 커널' 카테고리의 다른 글

리눅스 커널 분석 시 아키텍쳐별 tag 및 cscope생성  (0) 2012.04.16
Virtual Linux Manager 정리 1  (0) 2012.03.18
Documentation/arm/booting  (0) 2011.09.25
Linux 3.0 Kernel  (0) 2011.07.31
커널선점  (0) 2011.05.01
Posted by code cat