Pragma Solidität funktioniert nicht

Geben Sie hier die Bildbeschreibung ein

Hallo zusammen, ich bin sehr neu bei Ethereum, noob-neu. Das mag viele verärgern, aber ich muss fragen, warum Pragma Solidity nicht richtig funktioniert. Ich habe unzählige Beispiele gesehen, bei denen pragma solidity ^0.4.0; funktioniert, aber warum funktioniert es bei mir nicht? Ich habe dies auf remix.ethereum.org, dem Browser-basierten Compiler von Ethereum, ausprobiert.

Ich erhalte diesen Fehler, helfen Sie bitte, jedermann!

browser/Untitled.sol:1:1: ParserError: Pragma, Importdirektive oder Vertrags-/Schnittstellen-/Bibliotheksdefinition erwartet.pragma solidity ^0.4.0;

Hier ist der Code:

pragma solidity ^0.4.0;
contract MyfirstContract{
    string private name;
    uint private age;

    function setName(string newName){
        name=newName;
    }
    fucntion getName() returns (string){
        return;

    }

}
Sie sollten Ihren Code als Codeblock posten, damit er kopiert und ausprobiert werden kann. Wenn es ein Bild ist, kann es niemand kopieren. Meine derzeitige Vermutung ist, dass Sie irgendwo dort ein seltsames Symbol haben, das sichtbar werden würde, wenn wir den Code kopieren und einfügen könnten.
Der Code funktioniert gut. Überprüfen Sie Ihre Remix-Version. functionist in getName() falsch geschrieben. Korrigiere das.
Heh, oops, Noob-Fehler. Compiler sagt, es ist nicht geladen?

Antworten (3)

Dies tritt auf, wenn der Compiler noch nicht geladen wurde. Sie sollten einige Zeit warten

Bei einer Anweisung wie pragma solidity ^0.4.11wird dieser Fehler durch Warten auf einige Zeit behoben. In dieser Anweisung ^sagen wir durch Verwendung, dass wir einen beliebigen Compiler oben verwenden sollen 0.4.11, also wenn 0.4.21er geladen ist, dann wird es auch funktionieren.

Aber manchmal kann dieser Fehler bestehen bleiben. Dies geschieht, wenn Sie eine bestimmte Compiler-Version verwenden, wie in der folgenden Zeile:

pragma solidity 0.4.3;

Gehen Sie in diesem Fall zum Einstellungsbereich auf der rechten Seite und wählen Sie die von Ihnen verwendete Compiler-Version aus.

Falls es nicht klar ist.

pragma"In der Computerprogrammierung ist eine Direktive oder ein Pragma (von "pragmatisch") ein Sprachkonstrukt, das angibt, wie ein Compiler (oder ein anderer Übersetzer) seine Eingabe verarbeiten soll." - https://en.wikipedia.org/wiki/Directive_(Programmierung)

Es sagt nur, dass es für einen Compiler der Version 0.4.0oder besser ( ^) entworfen wurde. Der solcCompiler ist so konzipiert, dass er einen Fehler auslöst, wenn er selbst nicht kompatibel ist, und dies kann eine hilfreiche Schutzmaßnahme sein – möglicherweise wird verhindert, dass ein inkompatibler oder ungetesteter Compiler verwendet wird.

Wie @Ayushya betonte, dauert das Laden und Initialisieren des Compilers selbst einige Sekunden. Im Falle eines inkompatiblen Compilers lässt Remix den Entwickler aus einer langen Liste verfügbarer Compiler auswählen, sodass Sie sich nicht mit dem Standard zufrieden geben müssen.

Geben Sie hier die Bildbeschreibung ein

Der pragmakann Ihnen sagen, welche Version des Compilers Sie laden müssen, um erfolgreich mit einer Quelldatei zu arbeiten. Dies ist möglicherweise wichtig, wenn Sie mit getestetem Code arbeiten, da möglicherweise nach der Veröffentlichung Breaking Changes eingeführt wurden. Wörter werden von Zeit zu Zeit abgelehnt.

Hauptsache: Mit Remix können Sie jeden Compiler laden, den Sie wollen/brauchen, und es gibt einige zur Auswahl. pragmaist da, um Kopfkratzer zu verhindern. Es schlägt vor, mit welcher Version der Entwickler gearbeitet und vermutlich den Code getestet hat.

Ich hoffe es hilft.

Zunächst. Ich habe genau das, was Sie hier gepostet haben, in Ihren Code kopiert und eingefügt. Sie haben "function" in Zeile 9 falsch geschrieben. Nachdem ich das korrigiert habe, kompiliert es für mich gut. Ich verwende Remix in Firefox. Überprüfen Sie, ob der von Ihnen gewählte Browser kein Problem verursacht, ob Sie nach der Korrektur des falsch geschriebenen Wortes immer noch eine Fehlermeldung erhalten. Versuchen Sie andernfalls, die SPDX-Lizenzversion zu installieren. Abgesehen davon würde ich sagen, dass Ihr Problem das falsch geschriebene Wort ist. [![kompiliert gut][2]][2]

Geben Sie hier die Bildbeschreibung ein