C++ C2632 Fehler in stdint.h

Schaltkreis

Cadet 2nd Year
Registriert
März 2008
Beiträge
18
Hallo,

ich weiß nicht genau wie ich anfangen soll, daher ein kurzer chronologischer Abriss:

2011: Ein Kollege wird mit einem Projekt beauftragt, benutzt VS2012
2013: Projekt wird auf VS2013 portiert, gerät in Vergessenheit
2016: Ich darf übernehmen, keine Doku, kein nichts. Unter VS2013 läuft es nicht, genausowenig unter VS2015

Ich habe jetzt schon fast alle Fehler ausgemerzt, stehe aber nun vor einem bei dem weder Google noch die Suche hier was ausspuckt. Ohne mein Zutun haben sich mehre TypeDefs invalidiert, genauer gesagt die Definitionen für unsigned Integer in der stdint.h
Hier die Definition:

Code:
typedef unsigned short     uint16_t;

Hier der Compilerfehler:

fehler.PNG

Nachtrag: Hier ein Link zu einem, sehr sehr ähnlichen Fehler auf Stackoverflow. Leider auch ohne Lösung: Klick

Für eine kleine Denkanregung wäre ich dankbar. Ich stehe vor einer Wand. Die ungültigen Tokens dürften m.M.n auch durch die fehlerhafte Typdef verursacht sein.


Grüße
 
Zuletzt bearbeitet: (Link hinzugefügt)
Das ist richtig, diese Defintion ist vorhanden, das sieht so aus:

Code:
#ifndef QCAMAPI
    #ifdef _WIN32

        #define QCAMAPI		__stdcall
        #define UNSIGNED64	unsigned __int64
		#define	uint32_t	unsigned long
		#define	uint16_t	unsigned short		 
		#define	uint8_t		unsigned char
    #else
        #define QCAMAPI
        #define UNSIGNED64 unsigned long long
    #endif
#endif // QCAMAPI

Wenn ich diese doppelte Definition allerdings auskommentiere, bleiben die Fehler gleich. Weitere Vorkommnisse gibt es nicht.
 
uint16_t ist seit C++11 ein von C++ selbst gelieferter Typ. Ist definiert in <cstdint> und sollte eigentlich im namespace std stecken, aber existiert in Microsoft's Implementierung möglicherweise auch im globalen namespace (oder du hast irgendwo ein using namespace std;).

P.S. Orientiere dich nicht an den Intellisense-Meldungen sondern gehe nach den tatsächlichen Compiler-Meldungen (die findest du in einem anderen Reiter).
Ergänzung ()

Sorry, hatte dein 1. Post nicht gründlich genug gelesen und nahm an, die typedefs kämen aus deinem Code. Ich würde alle Vorkommen von using namespace std; beseitigen und dann noch schauen, ob irgendwo <stdint.h> eingezogen wird, und wenn ja, die alle durch <cstdint> ersetzen.

Für genauere Analysen müßten wir den Code sehen (aber den wirst du wahrscheinlich nicht rausrücken dürfen).
 
Zuletzt bearbeitet:
Also als Ergänzung um dem Thread mal einen Sinn zu geben und anderen bei der Fehlerbehebung zu helfen (falls jemand auch darauf treffen sollte):

Das Problem ist, dass die Bibliotheken von unserem Kameratreiber nicht mehr aktualisiert werden und zuletzt für .NET Framework 4.0 oder 4.5 ausgelegt wurden. Jedenfalls ist es nicht möglich mit aktueller .NET Framework Umgebung (4.6.2) und diesen Bibliotheken zu arbeiten.
Behoben habe ich den Fehler über den dreckigsten Workaround überhaupt: ich programmiere jetzt wieder in VS C++ 2010 und altem Framework.

Danke trotzdem für alle an die Hilfe.
 
Zurück
Oben