Aber der Compiler gibt '(' aus - ein Semikolon wird erwartet
Was bedeutet das?
Ich habe es anhand des Beispiels aus dem Edit überprüft (wobei ich den ersten übergebenen Parameter ersetzt habe). Alles ist OK, es sind keine Fehler aufgetreten.
Das korrekte Hilfebeispiel sieht wie folgt aus
//function linfuncdouble linfunc(double a, double b)
{
return(a + b);
}
Eine solche Meldung wie die Ihre konnte ich persönlich nur in einem Test erhalten, als ich die erste geschweifte Klammer durch eine runde Klammer ersetzte. Dann erhielt ich diese Nachricht
'(' - Semikolon wird erwartet
Wenn die Anzahl der Klammern (rechts und links) nicht übereinstimmt, wird die folgende Warnung ausgegeben
';' - unerwartetes Token '}' - Semikolon wird erwartet
PS
Wenn ich versuche, das aktuelle Beispiel (mit einem russischen "a") zu kompilieren, erzeugt der Compiler einen Fehler, wie er sollte
Erfinde keine Dinge für andere, die es nicht gibt :) Das Symbol wurde selbstverständlich sofort im Editor korrigiert. Der Fehler tritt auf, wenn sich der Cursor vor der öffnenden Klammer und nicht vor dem Zeichen "a" befindet. Als aufmerksamer Mensch hätten Sie dies in dem zitierten Compiler-Kommentar bemerken müssen.
Erläuterung. Die Frage ist entstanden, nicht weil ich mich hinsetze und stupide Beispiele aus dem Referenzbuch kompiliere, sondern weil diese Fehlermeldung erscheint, wenn ich eine funktionierende Funktion erstelle. Der Verweis auf das Beispiel aus der Referenz ändert daran nichts. Sie können sogar die Beschreibung der Argumente aus der Kopfzeile entfernen - das Problem bleibt bestehen.
Ja, er hat einen Fehler, der höchstwahrscheinlich nichts mit diesem Beispiel zu tun hat....
Aber der Compiler gibt '(' aus - ein Semikolon wird erwartet
Was bedeutet das?
Wir haben den Buchstaben im Beispiel korrigiert, aber wir konnten diesen Fehler nicht genau finden. Können Sie den vollständigen Code zur Verfügung stellen, damit wir das Problem reproduzieren können?
Rosh: Der Buchstabe im Beispiel wurde zwar korrigiert, aber genau diesen Fehler konnten wir nicht finden. Können Sie den vollständigen Code bereitstellen, damit wir ihn reproduzieren können?
Ich danke Ihnen allen für Ihre Aufmerksamkeit auf diese Frage! Die Sache ist die, dass es keinen "vollständigen Code" gibt, der einen Fehler auslösen könnte. Ich habe gerade beschlossen, die Aussage aus einem C++-Lehrbuch zu überprüfen, dass der Wert einer externen Variablen, die einer Funktion als Argument übergeben wird, von der Funktion nicht geändert werden kann (oder so ähnlich - na ja, aus dem Bereich der Selbstbildung). Ich habe eine primitive Funktion zur Überprüfung erstellt - der Compiler erzeugt einen Fehler. Ich habe auf die Referenz verwiesen, das Beispiel kopiert, das Symbol im Beispiel korrigiert - und immer noch denselben Fehler. Ich habe versucht, die Funktion in eine Skriptvorlage und in die Expert Advisor-Vorlage einzufügen, der Fehler ändert sich nicht. Tatsächlich besteht der "vollständige Code" nur aus der Funktion aus dem Beispiel, die in den leeren Körper der Funktion onTick() oder onStart() eingefügt wurde.
Ich werde diesen pseudo-kompletten Code am Abend posten, aber ich weiß nicht, ob er hilft. Ich werde auch versuchen, den Computer zu überlasten, da er seit einer Woche im Modus "Schlafen gehen und zurück" verwendet wird.
Rosh: Der Buchstabe im Beispiel wurde korrigiert, aber es war nicht möglich, genau diesen Fehler zu erhalten. Können Sie den vollständigen Code bereitstellen, damit wir ihn reproduzieren können?
voidOnStart()
{
double// тип возвращаемого значения
linfunc (double a, double b) // имя функции и список параметров
{
// составной операторreturn (a + b); // возвращаемое значение
}
}
Nun, Sie versuchen, eine Funktion innerhalb einer anderen zu definieren - das ist inakzeptabel. Der Abschnitt über den Funktionsaufruf sagt Ihnen dies ausdrücklich:
Eine Funktion kann an beliebiger Stelle im Programm global, d.h. außerhalb anderer Funktionen, deklariert oder beschrieben werden. Eine Funktion kann nicht innerhalb einer anderen Funktion deklariert oder beschrieben werden.
Nun, Sie versuchen, eine Funktion innerhalb einer anderen zu definieren - das ist inakzeptabel. Der Abschnitt über den Funktionsaufruf sagt dies ausdrücklich:
Danke für die Klarstellung! Das ist genau mein Fall.
Theoretisches Wissen ist keine Garantie für die Richtigkeit seiner Anwendung in der Praxis :) Mein Fehler.
Wenn ein Diagramm gelöscht wird, erscheint es nicht in der Liste der gelöschten Diagramme, da der Menüpunkt Datei>Löschungen öffnen nicht funktioniert.
Ich habe das Diagramm versehentlich geschlossen (anstatt es aufzuklappen), in der Hoffnung, es in den gelöschten zu sehen, und dann ...
Wenn ein Diagramm gelöscht wird, erscheint es nicht in der Liste der gelöschten Diagramme, da der Menüpunkt Datei>Löschungen öffnen nicht funktioniert.
Ich habe das Diagramm versehentlich geschlossen (anstatt es aufzuklappen), in der Hoffnung, es in den gelöschten zu sehen, und dann ...
Einige Agenten lassen sich nicht aus der Ferne starten, hier ist das Protokoll:
LE 05.0.6.8414:51:19 login (build 392)
HN 2 Tester 14:51:20 initial synchronization error
JF 25.0.6.8414:51:20 send error 10038
LJ 0 Tester 14:51:20 tester agent shutdown
KO 05.0.6.8415:25:41 login (build 392)
HD 2 Tester 15:25:42 initial synchronization error
NM 0 Tester 15:25:42 tester agent shutdown
HM 0127.0.0.115:36:37 login (build 392)
FK 0 Network 15:36:382548 bytes of optimization passes loaded
HM 0 Network 15:36:3816 bytes of input parameters loaded
HE 0 Network 15:36:383788 bytes of group info loaded
GP 0 Network 15:36:383358 bytes of tester parameters loaded
HG 0 Network 15:36:382948 bytes of input parameters loaded
KL 0 Network 15:36:38671 bytes of selected symbols loaded
CD 0 Tester 15:36:38 expert file added: Experts\MyExperts\ExpCrossEMA.ex5. 133395 bytes loaded
QS 0 Tester 15:36:38 initial deposit 5000.00 USD, leverage 1:100
PJ 0 Tester 15:36:38 successfully initialized
NP 0 Network 15:36:38146 Kb of total initialization data received
MG 0 Tester 15:36:38 optimization pass 393 started
LR 0 TesterAgent 15:36:38 Intel Core2 Duo E8200 @ 2.66 GHz, 2047 MB, PR49
DI 0 Symbols 15:36:40 EURUSD: symbol synchronized, 2904 bytes of symbol info received
QS 0 History 15:36:40 EURUSD: load 704 Kb of history data to synchronize
OF 0 History 15:36:40 EURUSD: history synchronized from2009.01.02 to 2011.01.31
KK 0 History 15:36:42 EURUSD: contains 366322 M1 records of beginning data from2009.01.0210:00 to 2009.12.3118:59
CH 0 History 15:36:42 EURUSD,M5: history cache reserved for estimated 150171 bars
JO 0 History 15:36:42 EURUSD,M5: history begins from2009.01.0210:00
NK 0 Tester 15:36:42 EURUSD,M5 (Alpari-Demo): every tick generating
KS 0 Tester 15:36:42 EURUSD,M5: testing of Experts\MyExperts\ExpCrossEMA.ex5 from2010.01.0100:00 to 2011.01.0100:00 started with inputs:
PN 0 Tester 15:36:42 Inp_Signal_CrossEMA_FastPeriod=30
GG 0 Tester 15:36:42 Inp_Signal_CrossEMA_SlowPeriod=18
DS 0 Tester 15:36:42 Inp_Expert_Title=ExpCrossEMA
MK 0 Tester 15:36:42 Inp_Money_FixLot_Percent=10
FM 0 Tester 15:36:42 Inp_Money_FixLot_Lots=0.1
GO 0 ExpCrossEMA (EURUSD,M5) 15:36:422010.01.0100:00:00 CSignalCrossEMA::ValidationSettings: period of slow EMA must be greater than period of fast EMA
RF 0 ExpCrossEMA (EURUSD,M5) 15:36:422010.01.0100:00:00 OnInit: error signal parameters
DM 2 Tester 15:36:42 tester stopped because OnInit failed
FG 0 Network 15:36:4216 bytes of tester parameters received
PR 0 Tester 15:36:42 optimization pass 1817 started
FK 0 Tester 15:36:42 initial deposit 5000.00 USD, leverage 1:100
FL 0 Tester 15:36:44 EURUSD,M5 (Alpari-Demo): every tick generating
GE 0 Tester 15:36:44 EURUSD,M5: testing of Experts\MyExperts\ExpCrossEMA.ex5 from2010.01.0100:00 to 2011.01.0100:00 started with inputs:
GE 0 Tester 15:36:44 Inp_Signal_CrossEMA_FastPeriod=28
KM 0 Tester 15:36:44 Inp_Signal_CrossEMA_SlowPeriod=49
DJ 0 Tester 15:36:44 Inp_Expert_Title=ExpCrossEMA
IM 0 Tester 15:36:44 Inp_Money_FixLot_Percent=10
RF 0 Tester 15:36:44 Inp_Money_FixLot_Lots=0.1
GO 0 Tester 15:36:45 output to log disabled
IO 0 Tester 15:37:10 OnTester result 0
Obwohl über localhost arbeitet dieser Agent lokal.
Ich entnehme diese Funktion aus MQL5 Reference / Language Basics / Functions
Aber der Compiler gibt '(' aus - ein Semikolon wird erwartet
Was bedeutet das?
Ich habe es anhand des Beispiels aus dem Edit überprüft (wobei ich den ersten übergebenen Parameter ersetzt habe). Alles ist OK, es sind keine Fehler aufgetreten.
Das korrekte Hilfebeispiel sieht wie folgt aus
Eine solche Meldung wie die Ihre konnte ich persönlich nur in einem Test erhalten, als ich die erste geschweifte Klammer durch eine runde Klammer ersetzte. Dann erhielt ich diese Nachricht
'(' - Semikolon wird erwartet
Wenn die Anzahl der Klammern (rechts und links) nicht übereinstimmt, wird die folgende Warnung ausgegeben
';' - unerwartetes Token
'}' - Semikolon wird erwartet
PS
Wenn ich versuche, das aktuelle Beispiel (mit einem russischen "a") zu kompilieren, erzeugt der Compiler einen Fehler, wie er sollte
a" - nicht deklarierter Bezeichner
Erfinde keine Dinge für andere, die es nicht gibt :) Das Symbol wurde selbstverständlich sofort im Editor korrigiert. Der Fehler tritt auf, wenn sich der Cursor vor der öffnenden Klammer und nicht vor dem Zeichen "a" befindet. Als aufmerksamer Mensch hätten Sie dies in dem zitierten Compiler-Kommentar bemerken müssen.
Die Frage bleibt: https://www.mql5.com/ru/forum/1111/page304#comment_48136
Erläuterung. Die Frage ist entstanden, nicht weil ich mich hinsetze und stupide Beispiele aus dem Referenzbuch kompiliere, sondern weil diese Fehlermeldung erscheint, wenn ich eine funktionierende Funktion erstelle. Der Verweis auf das Beispiel aus der Referenz ändert daran nichts. Sie können sogar die Beschreibung der Argumente aus der Kopfzeile entfernen - das Problem bleibt bestehen.
Ja, er hat einen Fehler, der höchstwahrscheinlich nichts mit diesem Beispiel zu tun hat....
Sie müssen sich den gesamten Code ansehen...
Ich entnehme diese Funktion aus MQL5 Reference / Language Basics / Functions
Aber der Compiler gibt '(' aus - ein Semikolon wird erwartet
Was bedeutet das?
Der Buchstabe im Beispiel wurde zwar korrigiert, aber genau diesen Fehler konnten wir nicht finden. Können Sie den vollständigen Code bereitstellen, damit wir ihn reproduzieren können?
Ich danke Ihnen allen für Ihre Aufmerksamkeit auf diese Frage! Die Sache ist die, dass es keinen "vollständigen Code" gibt, der einen Fehler auslösen könnte. Ich habe gerade beschlossen, die Aussage aus einem C++-Lehrbuch zu überprüfen, dass der Wert einer externen Variablen, die einer Funktion als Argument übergeben wird, von der Funktion nicht geändert werden kann (oder so ähnlich - na ja, aus dem Bereich der Selbstbildung). Ich habe eine primitive Funktion zur Überprüfung erstellt - der Compiler erzeugt einen Fehler. Ich habe auf die Referenz verwiesen, das Beispiel kopiert, das Symbol im Beispiel korrigiert - und immer noch denselben Fehler. Ich habe versucht, die Funktion in eine Skriptvorlage und in die Expert Advisor-Vorlage einzufügen, der Fehler ändert sich nicht. Tatsächlich besteht der "vollständige Code" nur aus der Funktion aus dem Beispiel, die in den leeren Körper der Funktion onTick() oder onStart() eingefügt wurde.
Ich werde diesen pseudo-kompletten Code am Abend posten, aber ich weiß nicht, ob er hilft. Ich werde auch versuchen, den Computer zu überlasten, da er seit einer Woche im Modus "Schlafen gehen und zurück" verwendet wird.
Der Buchstabe im Beispiel wurde korrigiert, aber es war nicht möglich, genau diesen Fehler zu erhalten. Können Sie den vollständigen Code bereitstellen, damit wir ihn reproduzieren können?
Irgendwie wird das so wiedergegeben.
Nun, Sie versuchen, eine Funktion innerhalb einer anderen zu definieren - das ist inakzeptabel. Der Abschnitt über den Funktionsaufruf sagt Ihnen dies ausdrücklich:
Eine Funktion kann an beliebiger Stelle im Programm global, d.h. außerhalb anderer Funktionen, deklariert oder beschrieben werden. Eine Funktion kann nicht innerhalb einer anderen Funktion deklariert oder beschrieben werden.
Nun, Sie versuchen, eine Funktion innerhalb einer anderen zu definieren - das ist inakzeptabel. Der Abschnitt über den Funktionsaufruf sagt dies ausdrücklich:
Danke für die Klarstellung! Das ist genau mein Fall.
Theoretisches Wissen ist keine Garantie für die Richtigkeit seiner Anwendung in der Praxis :) Mein Fehler.
Bauart 392.
Wenn ein Diagramm gelöscht wird, erscheint es nicht in der Liste der gelöschten Diagramme, da der Menüpunkt Datei>Löschungen öffnen nicht funktioniert.
Ich habe das Diagramm versehentlich geschlossen (anstatt es aufzuklappen), in der Hoffnung, es in den gelöschten zu sehen, und dann ...
Bauart 392.
Wenn ein Diagramm gelöscht wird, erscheint es nicht in der Liste der gelöschten Diagramme, da der Menüpunkt Datei>Löschungen öffnen nicht funktioniert.
Ich habe das Diagramm versehentlich geschlossen (anstatt es aufzuklappen), in der Hoffnung, es in den gelöschten zu sehen, und dann ...
Kreuzen Sie das Kästchen an.
Einige Agenten lassen sich nicht aus der Ferne starten, hier ist das Protokoll:
Obwohl über localhost arbeitet dieser Agent lokal.
Was könnte der Grund dafür sein?