Warum sind in der Win API immer eigene Typen definiert (BOOL, FLOAT ...) ??
-
Hey Leute,
ich habe mir mal die Header "windef.h" angeguckt. Da sind mir besonders diese trivialen Typdefinitionen aufgefallen, deren Sinn ich mir einfach nicht erklären kann ! Wie z.B das hier:
typedef float FLOAT; typedef int INT; //usw. ....Warum macht man das ?? In meinen Augen erscheint es völlig unsinnig, da man ja auch gleich z.B 'int' anstatt 'INT' schreiben könnte...

Und ich habe gleich noch eine Frage:
Sagen wir mal, ich habe eine Win - 32 Applikation, und möchte darin ein paar eigene Funktionen reinpacken. Eine Funktion z.B verwendet die Funktion 'length ()'.
Aber da gibt es doch auch ein Gegenstück davon, und zwar in der API !! Warum ? Kann ich nicht die gewöhnlichen 'alten' Funktionen nehmen, die ich in Konsolenanwendungen sonst auch verwendet habe ?
Danke euch,
Mikey.
-
?! Guck dir mal genau an wie die #ifdef usw dort gesetzt sind ... und überleg mal was du hier für nen Mist gepostet hast.
-
Da die WinAPI logischerweise von MS stammt, wird sie auch von MS Standards und "Richtlinien" durchzogen. Dazu gehört es auch nahezu sämtliche primitive Datentypen durch typedefs zu ersetzen und zusätzlich noch eigene typedefs zu schaffen wie HANDLE, die letztenendes auch nur Ganzzahlen sind. Macht aber teilweise durchaus auch Sinn um den Sinn des Parameters klarer assoziieren zu können, beispielsweise stellt man sich unter einem Handle was anderes vor, als unter einer Zahl. Damit das ganze schön einheitlich aussieht, hat man halt int auch zum INT gemacht

-
mikey schrieb:
ich habe mir mal die Header "windef.h" angeguckt. Da sind mir besonders diese trivialen Typdefinitionen aufgefallen, deren Sinn ich mir einfach nicht erklären kann !
Das hat mehrere Gründe. Einer ist zB, dass die WinAPI sehr alt ist. Und zu der Zeit waren bestimmte Sachen auf Sprachebene noch nocht standardisiert. ZB gab es keinen boolschen Typ. Also hat man sich einfach einen gemacht.
typedef int BOOL; #define FALSE 0 #define TRUE 1Ähnlich sieht es mit den API spezifischen Typen aus, wie zB Handles, die letztendlich nicht viel mehr sind, als irgendwelche Ganzzahlwerte oder Zeiger. Früher war das teilweise noch etwas problematisch, da man einfach so ein Handle einem anderen zuweisen konnte. Dank der Abstraktion hat man dann die Definition des darunterliegenden Typs einfach geändert, so dass man nur noch Handles des gleichen Typs einander zuweisen kann ohne bestehende Funktionalität zu brechen.
Andere Gründe sind auch in der Konkretisierung von Typen zu suchen. WORD ist zB als 16 Bit unsigned Integer spezifiziert. Und das heisst, das soll natürlich auch so bleiben. Aber C legt nunmal keine genauen Grössen für Typen fest. ZB war int zu Win16 Zeiten 16 Bit gross, in Win32 aber 32 Bit.