배열의 크기를 미리 define 하여 사용하는 것은 좀 너저분하다.
sizeof(array) / sizeof(array[0]) 을 이용하여도 되지만, 이것은 배열이 아닌 포인터에도 코드가 돌아가며 오동작을 할 수 있다.
다음은 template 을 이용하여 컴파일러가 컴파일 할 때
같은 개수의 char 배열을 반환하는 형태의 내용없는 함수를 만들어 (반환값이 중요한게 아니라 내용이 없어도 된다.)
sizeof 를 수행하는 방식으로 개수를 알아내는 코드이다.
포인터에 사용하면 컴파일 오류가 날 것이다.
template <typename T, size_t S>
char (&ArraySizeHelper(T (&)[S]))[S];
#define countof(A) (sizeof(ArraySizeHelper(A)))
'Windows > 스타일링' 카테고리의 다른 글
배열을 반환하는 함수 (0) | 2015.09.25 |
---|---|
비트 연산으로 대문자, 소문자 변환 (0) | 2012.04.17 |
비트 연산으로 문자형 숫자를 숫자형으로 변환하기 (0) | 2012.04.17 |
1증가 또는 1감소 된 값 얻는 짧은 코드 (0) | 2011.10.12 |
문자정수 (0) | 2011.09.26 |