timeval undefined bei der Verwendung von windows.h und WIN32_LEAN_AND_MEAN

Zur Vermeidung von Konflikten mit winsock2.h, möchte ich wickle meine include windows.h mit WIN32_LEAN_AND_MEAN (undef ich es nach windows.h also nicht zu stören-Anwendungen mit meinem Header). Dies bewirkt, dass timeval werden nicht definiert, wenn winsock2.h ist nicht im Lieferumfang enthalten. Einschließlich der Zeit.h nicht definieren timeval entweder.

Wie bekomme ich timeval definiert (a), ohne zu zählen winsock2.h, (b) die Anwendungen, die nicht erfordern, dass mein Header zu beinhalten winsock2.h vor meinem Header, (c) und Antrag auf Aufnahme winsock2.h, wenn Sie Sie brauchen, und (d) nicht zu definieren timeval mich selbst, da kann es schon sein definiert sich durch die header der übergeordneten Anwendung ist inklusive?

  • Sie können nicht einfach undefiniert es nach dem einbinden von windows.h, wie Sie bereits ändern Sie das Verhalten der späteren re-darunter es (denken in Bezug auf die include-guards oder pragma once). WIN32_LEAN_AND_MEAN (und anderen wie "header-Konfiguration" Makros") sollte idealerweise Projekt-weiten Einstellungen; aber abgesehen, dass Sie weiterhin diese verwenden müssen konsequent in eine übersetzungseinheit. (Gegen-Beispiel: das standard-makro NDEBUG definiert ist, Veränderungen zu ermöglichen, also behaupten.h/cassert Verhalten sich sehr anders als andere-Header, und ist oft eine Quelle der Verwirrung. Viele Projekte, deshalb vermeiden Sie es und verwenden Sie benutzerdefinierte DEBUG-Makros.)
InformationsquelleAutor tjd | 2009-12-15
Schreibe einen Kommentar