_countof
-Makro
Berechnet die Anzahl der Elemente in einem statisch zugeordneten Array.
Syntax
#define _countof(array) (sizeof(array) / sizeof(array[0]))
Parameter
array
Der Name eines Arrays.
Rückgabewert
Die Anzahl der Elemente im Array als size_t
ausgedrückt.
Hinweise
_countof
wird als funktionsähnliches Präprozessormakro implementiert. Die C++-Version verfügt über zusätzliche Vorlagenmaschinen, um zur Kompilierungszeit zu erkennen, ob ein Zeiger anstelle eines statisch deklarierten Arrays übergeben wird.
Stellen Sie sicher, array
tatsächlich ein Array ist, und kein Zeiger. In C _countof
erzeugt fälschliche Ergebnisse, wenn array
es sich um einen Zeiger handelt. In C++ kann nicht kompiliert werden, _countof
wenn array
es sich um einen Zeiger handelt. Ein Array, das als Parameter an eine Funktion übergeben wird, zerfällt auf einen Zeiger, was bedeutet, dass Sie innerhalb der Funktion nicht verwenden _countof
können, um den Umfang des Arrays zu bestimmen.
Anforderungen
Makro | Erforderlicher Header |
---|---|
_countof |
<stdlib.h> |
Beispiel
// crt_countof.cpp
#define _UNICODE
#include <stdio.h>
#include <stdlib.h>
#include <tchar.h>
int main( void )
{
_TCHAR arr[20], *p;
printf( "sizeof(arr) = %zu bytes\n", sizeof(arr) );
printf( "_countof(arr) = %zu elements\n", _countof(arr) );
// In C++, the following line would generate a compile-time error:
// printf( "%zu\n", _countof(p) ); // error C2784 (because p is a pointer)
_tcscpy_s( arr, _countof(arr), _T("a string") );
// unlike sizeof, _countof works here for both narrow- and wide-character strings
}
sizeof(arr) = 40 bytes
_countof(arr) = 20 elements