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;
}
}
Dies tritt auf, wenn der Compiler noch nicht geladen wurde. Sie sollten einige Zeit warten
Bei einer Anweisung wie pragma solidity ^0.4.11
wird 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.21
er 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.0
oder besser ( ^
) entworfen wurde. Der solc
Compiler 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.
Der pragma
kann 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. pragma
ist 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]
Lauri Peltonen
Prashant Prabhakar Singh
function
ist in getName() falsch geschrieben. Korrigiere das.Durian Jaykin