Frage

Msdn ich dieses:

#pragma warning disable warning-list
#pragma warning restore warning-list

In den Beispielen sowohl disable und restore verwendet. Ist es notwendig, restore wenn ich es deaktiviert für eine ganze Datei möchten?

Wie, wenn ich nicht wiederherstellen, wie weit geht es tragen? Sind die Warnungen für alles danach kompiliert deaktiviert? Oder nur für den Rest der Datei? Oder wird es ignoriert?

War es hilfreich?

Lösung

Wenn Sie nicht wieder her die Sperrung für den Rest der Datei aktiv ist.

Interessanterweise ist dieses Verhalten nicht definiert in der Sprachspezifikation . (Siehe Abschnitt 9.5.8) jedoch der 9.5.1 Abschnitt auf Bedingte Kompilierung Symbolen anzeigt dies „bis zum Ende des Datei Verhaltens“

  

Das Symbol bleibt, bis eine definierte   #undef Richtlinie für das gleiche Symbol verarbeitet wird, oder bis zum Ende der   Quelldatei erreicht ist.

der ‚Pre-Prozessor‘ Da ist tatsächlich Teil der lexikalischen Analysephase der Zusammenstellung ist es wahrscheinlich, dass dieses Verhalten ein wirksamer Vertrag für Microsoft und alle andere Implementierungen für die absehbare Zukunft (zumal die alternativen wäre äußerst komplex und nicht deterministisch auf Basis von Quelldatei Kompilierung Reihenfolge)

Andere Tipps

Lassen Sie uns sagen, dass ich ein privates Feld haben, die Reflexionen mit initialisiert wird, offensichtlich der Compiler keinen Code in dieses Feld direkt zu schreiben, so können Sie eine Warnung wird -. Dass ich will nicht zeigen

Lassen Sie sich auch sagen, ich habe ein anderes privates Feld definiert 3 Zeilen unter dem ersten, dass ich zu initialisieren vergessen, wenn ich die Warnung für die gesamte Datei zu deaktivieren wird dies nicht eine Warnung auslösen.

die beste Verwendung für Pragma Warnung ist also ein „Warnung abzuschalten“ in Ordnung zu bringen, bevor die Linie, die die Warnung verursacht, die ich will, zu unterdrücken und eine „Warnung wiederherstellen“ direkt nach der Zeile so die gleichen Bedingungen in einem anderen Lage in der Datei wird immer noch eine Warnung auslösen.

Nein, Sie werden feststellen, dass die Compiler automatisch jede deaktiviert Warnung wiederherstellen, sobald es fertig ist eine Quelldatei Parsing.

#pragma warning disable 649
struct MyInteropThing
{
    int a;
    int b;
}
#pragma warning restore 649

Im obigen Beispiel hat mich die Warnung CS00649 gedreht, weil ich die Absicht, diese Struktur auf unsichere Art und Weise zu verwenden. Der Compiler wird nicht erkennen, dass ich in den Speicher schreiben, die diese Art von Layout hat, damit ich die Warnung ignorieren werden wollen:

  

Feld ‚Feld‘ wird nie zugewiesen und wird immer den Standardwert ‚Wert‘ hat

Aber ich will nicht die gesamte Datei nicht ungeprüft gelassen werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top