Wie leite ich erkläre GRIFF? (Win32)
Wie leite ich erklären HANDLE
? Ich will nicht, um alle windows.h
in diesem speziellen header.
- Nicht
#define HANDLE int
nicht genug? - GRIFF ist nicht ein
int
. Insbesondere, ich glaube, es ist die gleiche Breite wie ein Zeiger. - eigentlich ist es ein index in Tabellen im kernel-space. Und sowieso, Sie nicht brauchen, um ausführen Arithmetik auf.
- Ist dieser performance-kritischen code? Oder würde das einwickeln
HANDLE
Verwendung von pimpl ist eine option? Weil das ist eine ganze Menge sauberer, als zu versuchen, vorwärts zu erklären, ein undurchsichtiger Typ aus der Windows-API. - Nicht immer. Dinge wie die Fenstergriffe sind keine kernel-Bezug überhaupt. @James: Es ist nicht wirklich performance-kritisch ist, aber es scheint eine Verschwendung zu gehören, dass massive Kopf-nur um zu BEHANDELN ausgesetzt. Ich dachte, es war nur ein
void *
aber ich bin neugierig, ob es eine anerkannte Methode, dies zu tun. - In einem 32-bit-Projekt, es ist nur ein
void*
; ich weiß nicht, ob es einvoid*
wenn Gebäude für Intel 64 oder IA-64 - (und ich kann nicht herausfinden, meine 64-bit-Rechner mit ist heute morgen gestorben). Es ist zwar unwahrscheinlich, aufgrund der Abwärtskompatibilität, die den zugrunde liegenden Typ würde sich in Zukunft ändern, es ist nicht wirklich eine gute Praxis zu übernehmen, einen bestimmten Implementierung eines opaque-Typs. - aber ein Fenster-handle ist HWND, nicht GRIFF. Die zwei Arten der macht (manchmal etwas) passieren zeitgleich, aber auf jeden Fall sollte nicht gleichgestellt werden.
- Mein Punkt ist, dass der GRIFF verwendet wird, in vielen Orten, nicht immer in Bezug auf den Kernel
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den header, der eigentlich Typdefinitionen
HANDLE
istwinnt.h
. Leider ist dies 15K-Zeilen - hier, so fixieren Sie Ihre Ausgabe, indem Sie die slimlinewindef.h
ist ein wenig irreführend.Hier ist der entsprechende Teil auf meinem system (natürlich die details ändern könnte, von revision zu revision, aber ändern nicht an der Umsetzung, da diese brechen würden, in dem bestehende binaries):
PS gotta love, dass
#if 0
in dieser Versand-Microsoft-header-Datei.Gut, sieht aus wie ich, antwortete dieser mir. Ich habe gerade
#include
ed<windef.h>
statt<windows.h>
für jetzt. Ich möchte trotzdem die Möglichkeit haben, uns erklären, nur damit umgehen, wenn jemand eine Möglichkeit hat, dies zu tun.winnt.h
. Irgendeine Idee warum?