Forum: PC-Programmierung cstdint in VisualStudio benutzen


von Johannes S. (Gast)


Lesenswert?

Hallo,
ich möchte ein Stück Software vom µC auf dem PC testen. Dazu habe ich 
die nötigen Quellen in ein generiertes MFC Projekt geworfen.
Jetzt bekomme ich Fehler wenn ich Standardtypen wie uint8_t deklariere. 
Den Header <cstdint> habe ich angezogen, da wird gemeckert:

Der globale Gültigkeitsbereich weist kein "int_least8_t" auf. 
AdafruitGfxSimu  c:\Program Files (x86)\Microsoft Visual Studio 
14.0\VC\include\cstdint  23

Fehlt da ein Header oder ein define um diese Typen benutzen zu können?

von Johannes S. (Gast)


Lesenswert?

ooops, blöder Fehler, hatte das stdint.h vom gcc in das Projekt kopiert 
und das hat sich nicht vertragen. Jetzt kompiliert es schonmal.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Johannes S. schrieb:
> Dazu habe ich die nötigen Quellen in ein generiertes MFC Projekt
> geworfen.


Warum? Ist das C++-Code?

> Den Header <cstdint> habe ich angezogen, da wird gemeckert:

Wenn Du stattdessen die Headerdatei stdint.h einbinden würdest, gäbe 
es vielleicht weniger Gemecker.

: Bearbeitet durch User
von Johannes S. (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Warum? Ist das C++-Code?

ja, die AdafruitGfx Grafikroutinen.

> Wenn Du stattdessen die Headerdatei stdint.h einbinden würdest, gäbe
> es vielleicht weniger Gemecker.

für cpp ist ist cstdint schon richtig, stdint.h führte zum gleichen 
Fehler. Weil da halt die falsche gefunden wurde.

von Torsten R. (Firma: Torrox.de) (torstenrobitzki)


Lesenswert?

Johannes S. schrieb:
> Rufus Τ. F. schrieb:
>> Warum? Ist das C++-Code?
>
> ja, die AdafruitGfx Grafikroutinen.
>
>> Wenn Du stattdessen die Headerdatei stdint.h einbinden würdest, gäbe
>> es vielleicht weniger Gemecker.
>
> für cpp ist ist cstdint schon richtig, stdint.h führte zum gleichen
> Fehler. Weil da halt die falsche gefunden wurde.

Du kannst auch in C++ den header <stdint.h> verwenden. Dann liegen die 
dort deklarierten Typen im globalen namespace. Wenn Du <cstdint> 
verwendest, liegen die Typen im namespace std.

Also entweder:
1
#include <stdint.h>
2
uint8_t c;

oder
1
#include <cstdint>
2
std::uint8_t c;

Evtl. musst Du dem Compiler dann aber auch noch sagen, welchen 
Sprachstandard Du haben möchtest (>= C++11).

Die header sollten bei jedem Compiler dabei sein. Auch bei dem von 
Microsoft.

: Bearbeitet durch User
von Johannes S. (Gast)


Lesenswert?

ja, langsam dämmerts wieder. Aber die stdint funktionieren jetzt ja.

Und das ich was mit der MFC gemacht habe ist auch lange her. Das ist 
zwar nicht das modernste, aber für die Idee den cpp code vom µC in einer 
PC Simulation laufen zu lassen geht es. Ich habe jetzt ein Beispiel mit 
Direct2D und der Adafruit Grafiklib gemischt, jetzt muss ich noch sehen 
wie ich das Grafik RAM simuliere. Sollte mit einer Bitmap gehen in die 
gezeichnet wird und dann in OnDraw2D() dargestellt wird. Wenn jemand 
dafür noch ein Beispiel hat, her damit. Aber das kriege ich auch 
irgendwie hin.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.