Je reçois cette erreur lors de la compilation pour 32 bits. Le même fichier est compilé sans erreur pour Windows 64 bits
1> c: \ project \ test.cpp (1317): erreur C2664: ‘SsortingngCbCopyExW’: impossible de convertir le paramètre 5 de ‘SIZE_T *’ en ‘size_t *’
SIZE_T et size_t ont la même taille et le même signe. Quelle est la différence? Pourquoi ai-je besoin d’un casting ici? Et si les types sont différents, pourquoi s’agit-il d’une erreur uniquement sous Windows 32 bits?
SIZE_T
est différent de std::size_t
. Le premier est un type #define
d dans les en-têtes de Windows, le second est un type défini par votre compilateur C ++. Ils sont de types différents.
Au moins sur mon système, SIZE_T
est un typedef
pour ULONG_PTR
, qui est un #define
pour unsigned long
.
en quoi consiste SIZE_T?
Il peut être défini comme “unsigned int” ou uint32_t pour la compatibilité arrière