Kann jemand erklären, die c++ - Funktion FEHLGESCHLAGEN?
Ich habe gesehen, eine Menge von Beispiel c++ - code, der Wickel-Funktion Anrufe FEHLGESCHLAGEN() Funktion/Methode/makro.
Könnte mir jemand erklären wie das funktioniert? Und wenn möglich, kennt jemand eine c# - äquivalent?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es in der Regel überprüft die COM-Funktion Fehler. Aber die überprüfung einer Funktion, die zurückgibt einen
HRESULT
ist, was es für gemeint ist, speziell auf.FAILED
gibt den Wert true zurück, wenn dieHRESULT
Wert negativ ist, was bedeutet, dass die Funktion fehlgeschlagen ist ("Fehler" oder "Warnung" Schweregrad). BeideS_OK
undS_FALSE
sind >= 0 und so dass Sie werden nicht verwendet, um zu vermitteln, einen Fehler. Mit "negativ" meine ich, dass das high-bit ist gesetzt fürHRESULT
Fehlercodes d.h., Ihre hexadezimale Darstellung, die gefunden werden können, in z.B., winerror.h, beginnt mit einer 8, wie in 0x8000FFFF.Auf dieser Seite zeigt die Hälfte der WinError.h-include-Datei definiert
FAILED()
. Es ist tatsächlich nur ein sehr einfaches makro, das gesamte definition geht so:Sie werden nicht wirklich brauchen, dass in C#, es sei denn, du bist mit COM-Objekten. Die meisten .NETZ-Funktionen entweder bereits zurück (mehr oder weniger) sinnvollen Wert (D. H. null, false) oder eine exception werfen, wenn Sie scheitern.
Wenn Sie direkt Zugriff auf ein COM-Objekt, definieren Sie eine einfache Fehlgeschlagen-Funktion, die das tut, was die makro-entspannen Sie in der post hat. Definieren, die lokal (protected/private), da die chaotisch-COM details sollten nicht sichtbar in Ihrem app sowieso.
Falls Sie es nicht wissen, es gibt auch eine gelungene makro in COM. Keine Notwendigkeit, zu testen, Fehler 🙂