Was ist das kleinste Windows-header kann ich #include define DWORD?

Habe ich einen kleinen header-Datei von meiner eigenen, die erklärt, eine Reihe von Funktionen, von denen der eine hat einen Rückgabetyp DWORD. Ich bin nur ungern ziehen in windows.h nur, um die offizielle definition dieser Typ da, die Datei ist riesig, und mein Kopf wird in eine Anzahl von Quellcode-Modulen, die sonst nicht brauchen.

Natürlich, in der Praxis weiß ich, dass DWORD ist nur unsigned int, aber ich würde es vorziehen, die mehr hygienischen Ansatz, einschließlich einer offiziellen header-Datei, wenn möglich.

Auf auf dieser Seite es sagt, dass DWORD definiert ist, in windef.h, aber leider darunter nur diese kleine Datei, die führt direkt zu Kompilierungs-Fehler-anscheinend rechnet aufgenommen werden, durch die anderen Header. (Auch die Tatsache, dass meine Datei ist eine header-Datei auch heißt, ich kann nicht nur erklären, sondern WIN32_LEAN_AND_MEAN, da die source-Datei #schließt die Datei vielleicht müssen dies müssen nicht definiert werden.)

Irgendwelche Ideen? Ich weiß, es ist nicht das Ende der Welt-kann ich nur weiter #include <windows.h> - aber dachte, jemand habe eine bessere Idee!!

[BEARBEITEN]
Vielen Dank für Eure Antworten. Für diejenigen, die vorgeschlagen, mit einer anderen Art, lassen Sie mich erklären, warum das nicht wünschenswert, in diesem Fall: ich habe unterschiedliche, Plattform-spezifische Versionen der beiden Funktionen in unterschiedlichen source-Dateien, und stellen Sie die CMake-Konfiguration zur Erkennung der aktuellen Plattform und wählen, welche zu bauen. Auf Windows, meine Funktionen Aussehen:

typedef DWORD TimePoint;
TimePoint GetTimeNow(void);
double TimeDifference(TimePoint start, TimePoint end);

Die Windows-version von GetTimeNow() nur Aufrufe der Windows-API timeGetTime(), die zurückkehren, geben Sie DWORD, und so muss es haben, den gleichen Rückgabetyp. (Auf anderen Plattformen TimePoint haben eine andere Art, z.B. struct timeval auf UNIXy Plattformen.) Im Effekt, die Werte vom Typ TimePoint sind undurchsichtig, und die einzige Sache, die Sie tun können, mit Ihnen ist pass zwei von Ihnen zu TimeDifference() Messen die verstrichene Zeit zwischen Ihnen in Sekunden. Dies ermöglicht cross-Plattform-Entwicklung. Leider ist es immer noch bedeutet, dass der client-code hat, um zu wissen, die konkrete Art der TimePoint.

  • Warum nicht verwenden Sie die C-standard-lib, die ist avaibale auf Windows (siehe msdn.microsoft.com/en-us/library/abx4dbyh%28VS.80%29.aspx und msdn.microsoft.com/en-us/library/w4ddyt9h%28VS.80%29.aspx ); wenn alles, was Sie brauchen, ist 1-Sekunden-Auflösung, gibt es schon eine cross-Plattform-version TimeDifference() genannt difftime()
  • Dank Cristoph, in der Tat, dass ist genau das, was ich hatte, aber das ist für die Profilerstellung, und wir haben mehrere datasets, nehmen Sie im 1-10er Bereich, so habe ich beschlossen, ich wollte ein bisschen mehr Auflösung.
Schreibe einen Kommentar