std::size_t n = sizeof( long );
En fait, vous n'avez pas demandé précisément ce qui semble être une mauvaise pratique int ci-dessus. L'utilisation de size_t, de qualification avec l'espace de noms std,...
Comme le C++ Standard dit (18.1), size_t est un type défini dans l'en-tête standard . Je te suggère de supprimer toutes les pensées et les impressions à propos d'une possible succession de langage C. C++ est un langage différent et il est préférable de le considérer comme tel. Il a sa propre bibliothèque standard et tous les éléments de C++ de la Bibliothèque Standard sont définies dans l'espace de noms std. Toutefois, il est possible d'utiliser des éléments de la Bibliothèque Standard C dans un programme C++.
J'avais envisager de l'inclure comme un sale hack. La Norme C++ dispose que le contenu des en-têtes est le même ou est basée sur les en-têtes de la Bibliothèque C Standard, mais dans nombre de cas, des changements ont été appliqués. En d'autres mots, c'est pas un copier / coller d'en-têtes C en C++ en-têtes.
size_t est pas un type en C++. C'est un type défini de spécifier quel type de type intégral est utilisé comme un type de retour sizeof() de l'opérateur, le fait qu'un type de retour de sizeof() est définie par l'implémentation, de sorte que le C++ Standard unifie par la définition d'un size_t.
serait le programme suivant (sans
comprend) être prévu pour compiler sur
tous les compilateurs C++?
size_t foo()
{
return sizeof( long );
}
La Norme C++ dit (1.4):
Les noms définis dans la bibliothèque de l'espace de noms de la portée (7.3). En C ++ une unité de traduction (2.1) obtient l'accès à ces noms, y compris la norme appropriée de la bibliothèque de l'en-tête (16.2).
Le size_t est un nom défini dans l'espace de noms std, de sorte que chaque programme qui utilise ce nom doit inclure l'en-tête correspondant, dans ce cas.
Ensuite, le chapitre 3.7.3 dit:
*Cependant, en se référant à std std::bad_alloc, et std::size_t est mal formé, à moins que le nom a été déclarée en incluant l'en-tête approprié.*
Étant donné que, d'un programme à l'aide de size_t, mais pas y compris en-tête est mal formé.