티스토리 뷰



sizeof가 어떤 구조체나, 배열의 전체 사이즈의 byte를 구해준다면, _countof 는 배열의 개수를 구하는 매크로 이다.

 * _countof는 비주얼스튜디오에서만 사용이 가능하다.


다음과 같은 예제를 보자.

int arr[10]

int 형 타입의 배열을 선언한다. 
이 배열을 가지고 sizeof 와 _countof 를 사용한다면,

sizeof(arr) 의 결과 값은 40 (4 바이트인 int 타입이 10개)
_countof(arr) 의 결과 값은 10 (10개의 배열)

이 된다.


_countof는 비주얼 스튜디오에서만 사용 가능한데, 사실 단순한 매크로일 뿐이기 때문에 우분투에서 사용하려면 간단히 매크로를 풀어주면 된다.


#define _countof(_Array)     sizeof(_Array) / sizeof(_Array[0])

매크로는 위와 같이 되어있다. 간단하게 분석 한 번 해보자면, 배열의 총 사이즈를 엘리먼트 한 개의 사이즈로 나눠줌으로써 엘리먼트의 개수(배열의 개수)를 구하는 것이다.


그럼 이제 _countof(arr) 대신, sizeof(arr) / sizeof(arr[0]) 를 해줘도 똑같은 얘기가 된다.


C 표준이 아니어서 사용할 수 없었던 _countof 매크로, 이제는 어떤 플랫폼에서도 사용할 수 있다.



신고
크리에이티브 커먼즈 라이선스
Creative Commons License

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

c/c++ sprintf, snprintf 함수  (3) 2014.01.21
C언어 qsort() 함수  (3) 2014.01.02
배열의 개수를 세는 _countof 매크로  (0) 2013.12.31
c언어 - 함수포인터 (Function pointer)  (14) 2013.12.30
c언어 함수에 대한 기본 (2)  (0) 2013.06.14
c언어 함수에 대한 기본 (1)  (0) 2013.06.11

댓글
댓글쓰기 폼
1 ... 34 35 36 37 38 39 40 41 42 ... 45