‘uint32_t’ Identifikator nicht gefunden Fehler

Lesezeit: 3 Minuten

Kevins Benutzeravatar
Kevin

Ich portiere Code von Linux C nach Visual C++ für Windows.

Visual C++ weiß es nicht #include <stdint.h> also habe ich es auskommentiert.

Später fand ich viele davon 'uint32_t': identifier not found Fehler. Wie kann es gelöst werden?

  • Welches Include kommentierst du aus?

    – Daniel A. Weiß

    2. März 2011 um 2:30 Uhr

  • Und welche Version(en) von Visual C++ verwenden Sie? Das uint32_t und andere Integer-Typen mit exakter Breite sind nur Teil von C99 und C++0x, sodass ältere Compiler (wie Visual C++ 2008 und früher) sie nicht haben.

    – James McNellis

    2. März 2011 um 2:34 Uhr


  • Ziemlich viel !!! #include #include #include #include #include Danke !!!

    – Kevin

    2. März 2011 um 2:34 Uhr


  • Ich verwende Visual C++ Express 2008.

    – Kevin

    2. März 2011 um 2:36 Uhr

  • @kevin: Sie können plattformspezifische Header nicht einfach entfernen und vergessen. Sie müssen Alternativen für die neue Plattform finden. Dies beinhaltet oft ein gewisses Umschreiben Ihres Codes, um ihn portabel zu machen.

    – Leichtigkeitsrennen im Orbit

    25. Mai 2011 um 13:07 Uhr

Benutzeravatar von templatetypedef
Vorlagentypdef

Dieser Typ ist im C-Header definiert <stdint.h> Das ist Teil des C++11-Standards, aber nicht Standard in C++03. Entsprechend die Wikipedia-Seite in der Kopfzeilees wurde bis VS2010 nicht mit Visual Studio ausgeliefert.

In der Zwischenzeit könnten Sie wahrscheinlich Ihre eigene Version des Headers fälschen, indem Sie hinzufügen typedefist diese Karte Benutzerdefinierte Ganzzahltypen von Microsoft auf die von C erwarteten Typen. Zum Beispiel:

typedef __int32 int32_t;
typedef unsigned __int32 uint32_t;
/* ... etc. ... */

Hoffe das hilft!

  • Sie können auch die cstdint-Implementierung von Boost verwenden.

    – Peter Hüne

    2. März 2011 um 2:34 Uhr

  • Ich kopiere Ihren Code und füge ihn auf meiner Seite ein. Aber es zeigt diesen Fehler “Syntaxfehler: fehlendes ‘;’ vor dem Bezeichner ‘int32_t'” und “fehlender Typbezeichner – int angenommen. Hinweis: C++ unterstützt default-int nicht”.

    – Kevin

    2. März 2011 um 2:40 Uhr

  • Sorry Peter, ich bin neu bei C . Was ist die cstdint-Implementierung von Boost?

    – Kevin

    2. März 2011 um 2:42 Uhr

  • Die Ganzzahltypen von Microsoft mit fester Größe enden nicht mit “t”. Probieren Sie es einfach aus __int32.

    – Ben Voigt

    2. März 2011 um 2:50 Uhr

  • u_int32_t und uint32_t sind nicht vom gleichen Typ; man hat einen zusätzlichen Unterstrich nach dem u. Das scheint ein separates Problem zu sein.

    – Vorlagentypdef

    2. März 2011 um 2:59 Uhr

Tigerles Benutzeravatar
Tigerl

Du kannst #include <cstdint>. Es ist seit 2011 Teil des C++-Standards.

  • Dies sollte angesichts der Einschränkungen der Frage, wie C++ und VS2010, wahrscheinlich die akzeptierte Antwort sein. Es besteht keine Notwendigkeit, Ihre eigenen Typedefs zu rollen.

    – jww

    27. März 2018 um 23:13 Uhr

Ich habe den gleichen Fehler und es wurde behoben, einschließlich der folgenden Datei

#include <stdint.h>

am Anfang Ihrer Datei.

  • Wie in der Frage erwähnt, stdint.h ist nicht Teil des C++-Compilers, den das OP verwendet. Diese Antwort geht nicht auf die Frage ein.

    – Inspektionsfähig

    4. Januar 2016 um 14:34 Uhr

Benutzeravatar von ildjarn
ildjarn

Schub.Konfig bietet diese Typedefs für Toolsets an, die sie nicht nativ bereitstellen. Die Dokumentation für diese spezielle Funktion finden Sie hier: Standard-Integer-Typen

Eine Implementierung ist unter verfügbar msinttypes-Projektseite – “Dieses Projekt füllt das Fehlen von stdint.h und inttypes.h in Microsoft Visual Studio”.

Ich habe keine Erfahrung mit dieser Implementierung, aber ich habe gesehen, dass sie von anderen auf SO empfohlen wird.

  • Dies ist die bessere und am häufigsten verwendete Implementierung.

    – Philippe Ombredanne

    23. Juni 2016 um 9:48 Uhr

Benutzeravatar von ST3
ST3

Unter Windows verwende ich normalerweise Windows-Typen. Um es zu verwenden, müssen Sie es einschließen <Windows.h>.

In diesem Fall ist uint32_t UINT32 oder einfach nur UINT.

Alle Typendefinitionen sind hier: http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751%28v=vs.85%29.aspx

  • Dies ist die bessere und am häufigsten verwendete Implementierung.

    – Philippe Ombredanne

    23. Juni 2016 um 9:48 Uhr

Benutzeravatar von Darqer
Darqer

Ich musste das Projekt in VS2010 ausführen und konnte keine Änderungen im Code vornehmen. Meine Lösung bestand darin, vS2013 zu installieren und in VS2010 VC++ Directories->IncludeDirectories auf Program Files(x86)\Microsoft Visual Studio 12.0\VC\include zu verweisen. Dann wurde mein Projekt ohne Probleme kompiliert.

1421980cookie-check‘uint32_t’ Identifikator nicht gefunden Fehler

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy