Macro _countof
Calcule le nombre d’éléments dans un tableau alloué statiquement.
Syntaxe
#define _countof(array) (sizeof(array) / sizeof(array[0]))
Paramètres
array
Nom d'un tableau.
Valeur retournée
Nombre d'éléments dans le tableau, exprimé sous la forme size_t
.
Notes
_countof
est implémenté en tant que macro de préprocesseur de type fonction. La version C++ dispose d’une machine de modèle supplémentaire pour détecter au moment de la compilation si un pointeur est passé au lieu d’un tableau déclaré statiquement.
Assurez-vous que array
est bien un tableau et non un pointeur. En C, _countof
produit des résultats erronés s’il array
s’agit d’un pointeur. En C++, _countof
ne parvient pas à compiler s’il s’agit array
d’un pointeur. Un tableau passé en tant que paramètre à une fonction se décompose en pointeur, ce qui signifie que dans la fonction, vous ne pouvez pas utiliser _countof
pour déterminer l’étendue du tableau.
Spécifications
Macro | En-tête requis |
---|---|
_countof |
<stdlib.h> |
Exemple
// 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
Voir aussi
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour