리눅스 커널 소스를 살펴보다가 스트럭쳐 안에 이상한 형식의 변수 선언을 보았다.

struct task_struct {
     ...
     unsigned did_exec:1;
     ...
};

이런 형태였는데, 변수를 선언한 다음 콜론(:)과 숫자가 오는 형태는 여지껏 본 적이 없었다.
구글링을 하여 찾아보니 bit field라는 이름의 C언어의 문법 중 하나라는 것을 알게 되었다.
미리 이야기하자면 위의 구문은 did_exec라는 1bit짜리 변수를 선언한 것이다.


struct f
{
    unsigned int  flag : 1;   -- bit flag: on(1) 또는 off(0)의 값을 가질 수 있다. --
    signed int    num : 4;   -- signed 4-bit field; -7...7 또는 -8...7의 값을 갖는다. --
    : 3;                            -- 스트럭쳐를 8bit로 맞추기 위한 3bit의 padding bit --
} g;

'Development > C/C++' 카테고리의 다른 글

[char형의 비트셋을 출력하고 싶을 때]  (0) 2012.08.19
[LPSTR, LPCSTR, LPTSTR, LPCTSTR , LPWSTR, LPCWSTR 의 의미‎]  (0) 2012.08.19
[Call by Value와 Call by Reference]  (1) 2012.05.05
[Event]  (0) 2011.12.01
[Semaphore]  (0) 2011.12.01
Posted by cyj4369
,