Best practise: Windows Datentypen im eigenen Code verwenden oder Typen des Standards
-
Hallo!
Ich schreibe zur Zeit meine ersten Tools in C++, in der ich die WinApi verwendet. Windows selbst hat ja eine Unmenge an Datentypen definiert
wie z.B. DWORD für unsigned long
Ich frage mich nun, ob ich nur an den Schnittstellen zur WinApi diese Typen verwenden sollte und den Rest z.B. in C99 Typen (also uint32_t) programmieren soll oder konsequent überall im Sourcecode die Windows Typen verwenden sollte.
Was ist denn bei den Datentypen die "eleganteste" bzw. beste Lösung?
Danke euch!
Schöne Grüße,
Flasher
-
Ich nehme die Windows-Datentypen immer nur dann, wenn ich auch direkt mit Windows kommuniziere. Viele Funktionen aus der WinApi erwarten einfach bspw. einen DWORD*. Es wäre jetzt unabgebracht, die Adresse eines size_t zu übergeben. Unter 32 Bit würde es zwar gehen, unter Win64 stände man aber vor einem Problem.
Ein anderes Beispiel sind Speicheradressen. Unter 32Bit wurden (werden) die ganz gerne in einem DWORD gespeichert. Weltweit mussten vermutlich Abermilliarden Codezeilen durchsucht werden, um eine lauffähige 64 bittige Version zu kompilieren.
Daher ist es nicht verkehrt, sich wie du schon von vorherein Gedanken zu machen, obwohl es bei den ersten Tools wahrscheinlich eher egal ist.
In größeren Projekten werden meistens eigene Datentypen definiert (signed/unsigned 8,16,32,64 Bit) und konsequent verwendet.
-
Die typen wie DWORD und PCTSTR sind für mich universal genug und vor allem in jedem externen Projekt leicht durch eigene Definitionen zu ersetzen.
Für mich spricht nichts gegen Verwendung dieser Typen.