2016-11-11 2 views
12

Was ist der Unterschied zwischen einem "Syntaxfehler" und einem "Compilerfehler", wie Visual Studio es sieht? Oder, anders ausgedrückt, warum sind einige "Kompilierzeit" -Fehler mit rot Wellenlinien und einige mit blau Wellenlinien unterstrichen? Hier ein Beispiel:Syntaxfehler versus Compilerfehler in Visual Studio oder rote wellenförmige Unterstreichung versus blaue wellenförmige Unterstreichung

enter image description here

Die rot unterstrichen Fehler über diese Beschreibung hat:

No overload for method 'ValidateFilteredRecipient' takes 6 arguments

Der blaue Fehler unterstrichen hat diese Beschreibung:

'ValidateBuild': cannot declare instance members in a static class

Es ist mir nicht klar, was die Unterscheidungsmerkmale der beiden Fehler sind.

Ich dachte, die Antwort zu finden wäre ein Stück Kuchen: Ich würde es nur googeln und das erste Ergebnis wäre eine MSDN-Seite, die dieses Thema vollständig auslegt; Dies war jedoch sehr überraschend nicht der Fall. Ich begann mit dem Versuch, die Farben weg zu Google (da ich noch nicht wusste, rot „Syntaxfehler“ gemeint und blau bedeutet „Compiler-Fehler“):

visual studio red underline vs. blue underline

keine Hilfe gibt. Dann habe ich versucht, diese Suche:

visual studio error underline color meanings
visual studio underline color meanings

Ich konnte sehen, dass dies nirgendwo würde, so gegoogelt ich ein bisschen mehr und herausgefunden, wo die Farben in VS gesetzt wurden: Extras> Optionen> Umgebung> Schriftarten und Farben. Übrigens ist die Unfähigkeit, die riesige Liste hier zu durchsuchen, extrem ärgerlich, aber ich fand heraus, dass "Syntaxfehler" die rote wellenförmige Unterstreichung haben, und "Compiler-Fehler" die blaue wellige Unterstreichung haben.

enter image description here

Also was bedeuten diese? Zurück zu Google:

visual studio compiler error vs. syntax error

Nichts relevant. Hier ist die nächste, die ich gefunden habe, von MSDN:

Fonts and Colors, Environment, Options Dialog Box

Diese Seite diese Einträge hat:

Compiler Error -- Blue squiggles in the editor indicating a compiler error.

und

Syntax Error -- Parse errors.

nicht hilfreich - Betonung auf " überhaupt".Ich habe immer gedacht, ich wusste, was ein "Syntaxfehler" war, zumindest, und Wikipedia stimmt zu:

a syntax error is an error in the syntax of a sequence of characters or tokens that is intended to be written in a particular programming language.

Auch here is what what it has for syntax:

the syntax of a computer language is the set of rules that defines the combinations of symbols that are considered to be a correctly structured document or fragment in that language.

Also, aus geht zurück auf meine "Syntaxfehler" oben:

No overload for method 'ValidateFilteredRecipient' takes 6 arguments

Wie ist das ein Syntaxfehler nach der Definition, die ich hier aufgenommen habe? Eigentlich, meiner Meinung nach, der „Compiler-Fehler“ Ich habe mehr-eng erfüllt diese Definition eines Syntaxfehler:

'ValidateBuild': cannot declare instance members in a static class

Kann jemand bitte helfen Sie mir, dies herauszufinden?

+0

@ AlfieGoodacre - "etwas, was Sie nicht tun können oder der Compiler wird Ihnen nicht erlauben" <--- a.k.a. "etwas, was Sie falsch gemacht haben". –

+0

Zögernde Upvote für eine Frage, die sehr gut zusammen ist, aber auch ein bisschen eine zottige Hunde-Geschichte, als ich genau erkannte, was Sie gerade studieren. Rote Wellenlinien, blaue Wellenlinien, können wir nicht alle miteinander auskommen? –

+0

@JeroenMostert - das verstehe ich total. Aber nervt es dich nicht? Ich meine, das ist eine kommerzielle Enterprise-IDE ... Um ein Rätsel zu lösen, zumindest ... warum sind sie nicht nur ein Fehlertyp? Und warum sind sie nicht dokumentiert? –

Antwort

1

Der Hauptunterschied zwischen dem Syntaxfehler und dem Kompilierungsfehler liegt vor, wenn Visual Studio dies erkennt.

Syntaxfehler wird erkannt und beim Codieren hervorgehoben. Sie müssen den Code nicht erstellen, um diese Fehler zu erhalten.

Kompilierungsfehler sind jedoch komplex, die der Editor beim Programmieren nicht erkennen kann. Sie müssen es durch einen Compiler ausführen (Build), um sie zu identifizieren. Die Chancen stehen also gut, dass man mit dem Codieren fortfahren kann, ohne kompiliert zu werden, und dass es nicht möglich sein wird, sie zu erkennen, bis er sie erstellt.

Grundsätzlich sind Syntaxfehler eine Teilmenge von Kompilierungsfehlern. Wenn Sie einen Texteditor wie Notepad verwenden, um Ihren Code zu schreiben, werden Sie nie einen Syntaxfehler sehen. Alle werden als Kompilierungsfehler protokolliert, wenn Sie den Code über Compiler ausführen.

In Bezug auf die Hervorhebung anders, ich denke, es ist eine visuelle Darstellung für den Entwickler zu verstehen, was er dabei beim Schreiben des Codes gefangen hätte.

Wie von allen erwähnt, müssen Sie am Ende des Tages beide beheben, damit Sie Code ausführen.

Dies gilt für jede Programmiersprache und den mit dieser Sprache verwendeten Editor.

3

Sowohl Syntax- als auch Compilerfehler verhindern die Kompilierung Ihres Codes.

Syntaxfehler beziehen sich darauf, wie Ihr Code mit anderen Codeabschnitten interagiert. Dinge wie Typenkonflikte beim Übergeben von Parametern an Funktionen usw.

Compilerfehler beziehen sich dagegen auf grundlegendere Architekturverletzungen wie den Versuch, von versiegelten Klassen zu erben oder nicht statische Elemente in statischen Klassen zu definieren. Diese widersprechen eher der Definition der Sprache als der Verwendung der Sprache.

+0

"Diese gehen gegen die ** Definition der Sprache **" - Ist das nicht die Syntax der Sprache? –

+0

Ich denke, dass es eine Unterscheidung zwischen diesen beiden Arten von Fehlern geben muss - ob Sie es einen Syntaxfehler nennen oder etwas anderes ist Semantik. IMO Ein Syntaxfehler ist lediglich eine andere Kategorie von Compilerfehlern. – Theo

+0

Ich stimme dir da definitiv zu. Ich ärgere mich nur darüber, dass MS sich erst darum gekümmert hat, die beiden zu unterscheiden, und dann den Ball auf die Implementierung geworfen hat. –