Wie kann ich Deklaration HANDLE
weiterleiten? Ich möchte nicht alle windows.h
in diesem bestimmten Header enthalten.Wie führe ich DEPLINE GRIFF weiter? (Win32)
Antwort
Der Header, der tatsächlich typedefs HANDLE
ist winnt.h
. Leider sind das 15K Zeilen - hier, also ist es ein bisschen irreführend, das Problem zu beheben, indem man die Slimline windef.h
mit einbezieht.
Hier ist der relevante Teil auf meinem System (natürlich die Einzelheiten von Revision zu Revision ändern könnten, werden aber nicht auf der Ebene der Umsetzung ändern, da diese bestehenden Binaries brechen würde):
//
// Handle to an Object
//
#ifdef STRICT
typedef void *HANDLE;
#if 0 && (_MSC_VER > 1000)
#define DECLARE_HANDLE(name) struct name##__; typedef struct name##__ *name
#else
#define DECLARE_HANDLE(name) struct name##__{int unused;}; typedef struct name##__ *name
#endif
#else
typedef PVOID HANDLE;
#define DECLARE_HANDLE(name) typedef HANDLE name
#endif
typedef HANDLE *PHANDLE;
PS gotta love dass #if 0
in diesem Versand Microsoft-Header-Datei.
Wahrscheinlich, um einen Compiler-Fehler zu umgehen. –
@Billy - so zynisch ... ;-) –
Nun, sieht aus wie ich selbst antwortete. Ich nur #include
ed <windef.h>
anstelle von <windows.h>
für jetzt. Ich möchte immer noch in der Lage sein, nur GRIFF zu deklarieren, wenn jemand einen Weg hat, dies zu tun.
Lookup jedoch ist es in windef.h definiert und kopieren Sie die Definition. Windows ist ein fester permanenter ABI. Es ist kein offener Standard oder etwas, wo Sie sich um die Portabilität für verschiedene Implementierungen kümmern müssen. –
Ich habe das gleiche gemacht, aber ich bekomme eine Fülle von Compiler-Fehlern von 'winnt.h'. Irgendeine Idee warum? – CinCout
- 1. Griff STRG + C auf Win32
- 2. Wie führe ich einen Prozess nach Abschluss von Threads weiter?
- 3. Wie führe ich ein Python-Skript weiter, während ich ein Plot/eine Figur zeige?
- 4. Wie führe ich die Liste weiter, wenn ich auf einen anderen Controller in mvc umadressiere?
- 5. Wie gehe ich weiter ViewController
- 6. Wie führe ich effizient eine Zeile zu einer großen Datei in Powershell weiter
- 7. Wie führe ich MPMoviePlayerController zur angegebenen Zeit in iPhone-Anwendung weiter?
- 8. Wie führe ich eine interaktive Python-App in Emacs auf Win32 aus?
- 9. Wie führe ich ein Rollendiff?
- 10. Wie führe ich TopoJSON aus?
- 11. Wie gebe ich ein Passwort an pg_dump weiter?
- 12. Wie sicher Griff vermeiden wurde
- 13. Wie COM Griff in .NET
- 14. Wie führe ich eine Datei mit Java aus?
- 15. Socket.Send und Receive .. Wie gehe ich weiter?
- 16. Wie gebe ich Daten zwischen Threads weiter?
- 17. Wie kann ich diese Farbdifferenzfunktion weiter optimieren?
- 18. Wie finde ich Ressourcenverluste in Win32?
- 19. Griff Brennen mehrere Male
- 20. Kann ich einen Griff bekommen - Quelle?
- 21. C/C++ Konsole Windows WIN32
- 22. C# - Win32: Ein Griff zum obersten Fenster, nachdem es den Fokus verloren hat?
- 23. Wie führe ich Python-Datei in Linux
- 24. Wie führe ich einen Systembefehl in Qt?
- 25. Wie führe ich eine bessere Kolorierungsfunktion aus?
- 26. Wie führe ich eine .group() mit Java
- 27. Wie führe ich EXE-Datei in PHP
- 28. Wie führe ich eine facettierte Suche durch?
- 29. Wie führe ich lm.ridge summary aus?
- 30. Wie führe ich mehrere Auswahl in NSTableView
Ist '#define HANDLE int 'nicht genug? – ruslik
@ruslik: HANDLE ist kein 'int'. Insbesondere glaube ich, dass es die gleiche Breite wie ein Zeiger hat. –
@Billy ist eigentlich ein Index in einige Tabellen im Kernelraum. Und überhaupt müssen Sie keine Berechnungen anstellen. – ruslik