Pero el compilador imprime '(' - se espera un punto y coma
¿Qué significa?
He comprobado mediante el ejemplo de la edición (sustituyendo el primer parámetro pasado). Todo está bien, no se ha producido ningún error.
El ejemplo de ayuda correcto es el siguiente
//function linfuncdouble linfunc(double a, double b)
{
return(a + b);
}
Personalmente, sólo pude obtener un mensaje como el tuyo en una prueba, cuando sustituí el primer paréntesis rizado por uno redondo. Entonces recibí este mensaje
'(' - se espera un punto y coma
Si el número de paréntesis (derecho e izquierdo) no coincide, se genera la siguiente advertencia
';' - token inesperado '}' - se espera el punto y coma
PS
Si intento compilar el ejemplo actual (con una "a" rusa) el compilador genera un error como debería
No te inventes cosas para los demás que no existen :) El símbolo se arregló enseguida en el editor, como algo natural. El error se produce cuando el cursor está delante del paréntesis de apertura, no antes del carácter "a". Siendo humanamente atento, debería haberlo notado en el comentario del compilador citado.
Explicación. La pregunta ha surgido, no porque me esté sentando a compilar estúpidamente ejemplos del libro de referencia, sino porque aparece este mensaje de error cuando creo una función de trabajo. El ejemplo de la referencia no cambia nada. Incluso puede eliminar la descripción de los argumentos de la cabecera, pero el problema persiste.
Sí, tiene un error, probablemente no relacionado con este ejemplo ....
Pero el compilador imprime '(' - se espera un punto y coma
¿Qué significa?
Hemos arreglado la letra del ejemplo, pero no hemos podido conseguir este error exacto. ¿Puede proporcionar el código completo para que podamos reproducirlo?
Rosh: La letra del ejemplo se ha arreglado, pero ese es el error exacto que no podíamos conseguir. ¿Puede proporcionar el código completo para que podamos reproducirlo?
¡Gracias a todos por su atención a la pregunta! La cuestión es que no hay un "código completo" que pueda iniciar un error. Acabo de decidir comprobar la afirmación de un libro de texto de C++ de que el valor de una variable externa, que se pasa a una función como argumento, no puede ser cambiado por la función (o algo así - bueno, desde el ámbito de la autoeducación). He creado una función primitiva para comprobar - el compilador genera un error. He consultado la referencia, he copiado el ejemplo, he corregido el símbolo en el ejemplo y sigue el mismo error. He intentado insertar la función en una plantilla de script y en la plantilla de Asesor Experto, el error no cambia. De hecho, el "código completo" consiste únicamente en la función del ejemplo, que se ha insertado en el cuerpo vacío de la función onTick() o onStart().
Por la noche colgaré dicho código pseudocompleto, pero no sé si sirve de algo. También intentaré sobrecargar el ordenador, ya que se ha utilizado en modo "ir a dormir y volver" durante una semana.
Rosh: La letra del ejemplo ha sido corregida, pero no ha sido posible obtener este error exacto. ¿Puede proporcionar el código completo para que podamos reproducirlo?
voidOnStart()
{
double// тип возвращаемого значения
linfunc (double a, double b) // имя функции и список параметров
{
// составной операторreturn (a + b); // возвращаемое значение
}
}
Pues bien, estás tratando de definir una función dentro de otra - esto es inaceptable. La sección de llamada a la función se lo indica explícitamente:
Una función puede declararse o describirse en cualquier parte del programa de forma global, es decir, fuera de otras funciones. Una función no puede ser declarada o descrita dentro de otra función.
Algunos agentes no se inician de forma remota, aquí está el registro:
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
Aunque a través de localhost este agente funciona localmente.
Tomo esta función de MQL5 Reference / Language Basics / Functions
Pero el compilador imprime '(' - se espera un punto y coma
¿Qué significa?
He comprobado mediante el ejemplo de la edición (sustituyendo el primer parámetro pasado). Todo está bien, no se ha producido ningún error.
El ejemplo de ayuda correcto es el siguiente
Personalmente, sólo pude obtener un mensaje como el tuyo en una prueba, cuando sustituí el primer paréntesis rizado por uno redondo. Entonces recibí este mensaje
'(' - se espera un punto y coma
Si el número de paréntesis (derecho e izquierdo) no coincide, se genera la siguiente advertencia
';' - token inesperado
'}' - se espera el punto y coma
PS
Si intento compilar el ejemplo actual (con una "a" rusa) el compilador genera un error como debería
'a' - identificador no declarado
No te inventes cosas para los demás que no existen :) El símbolo se arregló enseguida en el editor, como algo natural. El error se produce cuando el cursor está delante del paréntesis de apertura, no antes del carácter "a". Siendo humanamente atento, debería haberlo notado en el comentario del compilador citado.
La pregunta sigue siendo: https://www.mql5.com/ru/forum/1111/page304#comment_48136
Explicación. La pregunta ha surgido, no porque me esté sentando a compilar estúpidamente ejemplos del libro de referencia, sino porque aparece este mensaje de error cuando creo una función de trabajo. El ejemplo de la referencia no cambia nada. Incluso puede eliminar la descripción de los argumentos de la cabecera, pero el problema persiste.
Sí, tiene un error, probablemente no relacionado con este ejemplo ....
Tienes que mirar todo el código...
Tomo esta función de MQL5 Reference / Language Basics / Functions
Pero el compilador imprime '(' - se espera un punto y coma
¿Qué significa?
La letra del ejemplo se ha arreglado, pero ese es el error exacto que no podíamos conseguir. ¿Puede proporcionar el código completo para que podamos reproducirlo?
¡Gracias a todos por su atención a la pregunta! La cuestión es que no hay un "código completo" que pueda iniciar un error. Acabo de decidir comprobar la afirmación de un libro de texto de C++ de que el valor de una variable externa, que se pasa a una función como argumento, no puede ser cambiado por la función (o algo así - bueno, desde el ámbito de la autoeducación). He creado una función primitiva para comprobar - el compilador genera un error. He consultado la referencia, he copiado el ejemplo, he corregido el símbolo en el ejemplo y sigue el mismo error. He intentado insertar la función en una plantilla de script y en la plantilla de Asesor Experto, el error no cambia. De hecho, el "código completo" consiste únicamente en la función del ejemplo, que se ha insertado en el cuerpo vacío de la función onTick() o onStart().
Por la noche colgaré dicho código pseudocompleto, pero no sé si sirve de algo. También intentaré sobrecargar el ordenador, ya que se ha utilizado en modo "ir a dormir y volver" durante una semana.
La letra del ejemplo ha sido corregida, pero no ha sido posible obtener este error exacto. ¿Puede proporcionar el código completo para que podamos reproducirlo?
De alguna manera esto se reproduce así.
Pues bien, estás tratando de definir una función dentro de otra - esto es inaceptable. La sección de llamada a la función se lo indica explícitamente:
Una función puede declararse o describirse en cualquier parte del programa de forma global, es decir, fuera de otras funciones. Una función no puede ser declarada o descrita dentro de otra función.
Pues bien, estás tratando de definir una función dentro de otra - esto es inaceptable. La sección de llamada a la función lo dice explícitamente:
Gracias por la aclaración. Exactamente mi caso.
El conocimiento teórico no garantiza la corrección de su aplicación en la práctica :) Mi error.
Construye 392.
Al borrar un gráfico, éste no aparece en la lista de borrados. Resulta que la opción de menú Archivo>Abrir borrados no funciona.
Accidentalmente cerré (en lugar de desplegar) el gráfico, esperaba verlo en los borrados, y entonces ...
Construye 392.
Al borrar un gráfico, éste no aparece en la lista de borrados. Resulta que la opción de menú Archivo>Abrir borrados no funciona.
Accidentalmente cerré (en lugar de desplegar) el gráfico, esperando verlo en los borrados, y luego ...
Marca la casilla.
Algunos agentes no se inician de forma remota, aquí está el registro:
Aunque a través de localhost este agente funciona localmente.
¿Cuál podría ser la razón?