44 lines
1.5 KiB
C
44 lines
1.5 KiB
C
|
/*--------------------------------------------------------------------------*
|
||
|
*
|
||
|
* Microsoft Windows
|
||
|
* Copyright (C) Microsoft Corporation, 1992 - 1999
|
||
|
*
|
||
|
* File: countof.h
|
||
|
*
|
||
|
* Contents:
|
||
|
*
|
||
|
* History: 12-May-98 JeffRo Created
|
||
|
*
|
||
|
*--------------------------------------------------------------------------*/
|
||
|
|
||
|
#ifndef __COUNTOF_H__
|
||
|
#define __COUNTOF_H__
|
||
|
#pragma once
|
||
|
|
||
|
/*-------------------------------------------------------------------*/
|
||
|
/* Define a safe function that will return the count of elements */
|
||
|
/* in an array. It is safe because it won't compile if the argument */
|
||
|
/* is not an array, whereas the classic macro to do this: */
|
||
|
/* */
|
||
|
/* #define countof(a) (sizeof(a) / sizeof(a[0])) */
|
||
|
/* */
|
||
|
/* will compile if given a pointer, but will almost certainly not */
|
||
|
/* give the expected result. */
|
||
|
/* */
|
||
|
/* Unfortunately, the compiler won't compile this yet. */
|
||
|
/*-------------------------------------------------------------------*/
|
||
|
#if _MSC_VER > 1400
|
||
|
#error See if the compiler can handle the countof<T> template now.
|
||
|
#endif
|
||
|
|
||
|
#ifdef COMPILER_WONT_COMPILE_THIS
|
||
|
template <typename T, size_t N>
|
||
|
inline size_t countof(T (&a)[N])
|
||
|
{ return N; }
|
||
|
#else
|
||
|
#define countof(x) (sizeof(x) / sizeof((x)[0]))
|
||
|
#endif
|
||
|
|
||
|
|
||
|
#endif // __COUNTOF_H__
|