_countof
Macro
Calcola il numero di elementi in una matrice allocata in modo statico.
Sintassi
#define _countof(array) (sizeof(array) / sizeof(array[0]))
Parametri
array
Il nome di una matrice.
Valore restituito
Numero di elementi nella matrice, espresso come un size_t
.
Osservazioni:
_countof
viene implementato come macro del preprocessore simile a una funzione. La versione C++ include macchinari di modello aggiuntivi per rilevare in fase di compilazione se viene passato un puntatore anziché una matrice dichiarata staticamente.
Assicurarsi che array
sia effettivamente una matrice, non un puntatore. In C produce _countof
risultati errati se array
è un puntatore. In C++, _countof
non riesce a compilare se array
è un puntatore. Una matrice passata come parametro a una funzione decadi a un puntatore, ovvero all'interno della funzione, non è possibile usare _countof
per determinare l'extent della matrice.
Requisiti
Macro | Intestazione obbligatoria |
---|---|
_countof |
<stdlib.h> |
Esempio
// 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