Je porte du code de Linux C vers Visual C ++ pour Windows.
Visual C ++ ne le sait pas, #include <stdint.h>
alors je l'ai commenté.
Plus tard, j'ai trouvé beaucoup de ces 'uint32_t': identifier not found
erreurs. Comment peut-il être résolu?
Je porte du code de Linux C vers Visual C ++ pour Windows.
Visual C ++ ne le sait pas, #include <stdint.h>
alors je l'ai commenté.
Plus tard, j'ai trouvé beaucoup de ces 'uint32_t': identifier not found
erreurs. Comment peut-il être résolu?
uint32_t
et les autres types d'entiers de largeur exacte ne font partie que de C99 et C ++ 0x, donc les compilateurs plus anciens (comme Visual C ++ 2008 et versions antérieures) ne les ont pas.
Réponses:
Ce type est défini dans l'en-tête C <stdint.h>
qui fait partie du standard C ++ 11 mais pas du standard C ++ 03. Selon la page Wikipedia sur l'en-tête , il n'a été livré avec Visual Studio avant VS2010.
En attendant, vous pourriez probablement simuler votre propre version de l'en-tête en ajoutant des typedef
s qui mappent les types d'entiers personnalisés de Microsoft aux types attendus par C. Par exemple:
typedef __int32 int32_t;
typedef unsigned __int32 uint32_t;
/* ... etc. ... */
J'espère que cela t'aides!
__int32
.
u_int32_t
et uint32_t
ne sont pas du même type; on a un trait de soulignement supplémentaire après le u
. Cela semble être un problème distinct.
J'ai la même erreur et je l'ai corrigée en incluant dans le fichier ce qui suit
#include <stdint.h>
au début de votre dossier.
Boost . Config propose ces typedefs pour les jeux d'outils qui ne les fournissent pas nativement. La documentation de cette fonctionnalité spécifique est ici: Types d'entiers standard
Une implémentation est disponible sur la page du projet msinttypes - «Ce projet remplit l'absence de stdint.h et inttypes.h dans Microsoft Visual Studio».
Je n'ai pas d'expérience avec cette implémentation, mais je l'ai vue recommandée par d'autres sur SO.
Sous Windows, j'utilise généralement des types de fenêtres. Pour l'utiliser, vous devez inclure <Windows.h>
.
Dans ce cas, uint32_t est UINT32 ou juste UINT.
Toutes les définitions de types sont ici: http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751%28v=vs.85%29.aspx
J'ai dû exécuter le projet dans VS2010 et je n'ai pas pu introduire de modifications dans le code. Ma solution consistait à installer vS2013 et dans VS2010, les répertoires VC ++ -> IncludeDirectories to Program Files (x86) \ Microsoft Visual Studio 12.0 \ VC \ include. Ensuite, mon projet a été compilé sans aucun problème.