sion: Sólo que el sentido de la pregunta era que ts es un array. Y por qué este if(ts) compila y los anteriores no.
La expresión if(ts) significa que el objeto array ts existe realmente. He sacado a relucir específicamente la semántica.
¿Quiere prohibir la recopilación de este caso o bastará con una advertencia? (Por cierto, debe haber una advertencia. Si no hay aviso, es culpa nuestra, algo se ha roto)
La expresión If(ts) significa que el objeto array ts existe realmente. He mencionado específicamente la semántica.
¿Quiere prohibir la recopilación de este caso o basta con una advertencia? (Por cierto, debería haber una advertencia. Si no hay aviso, es nuestra culpa, algo está roto)
El ServiceDesk no reconoce el error, refiriéndose a que los identificadores no pueden empezar por un número.
Pero 5Test no es un identificador, es un nombre de archivo. Y los nombres de los archivos pueden empezar por un dígito y no se ha impuesto ninguna restricción a los nombres de los archivos #import .ex5
El ServiceDesk no reconoce el error, refiriéndose a que los identificadores no pueden empezar por un número.
Pero 5Test no es un identificador, es un nombre de archivo. Y los nombres de los archivos pueden comenzar con un dígito y no se impusieron restricciones a los nombres de los archivos #import .ex5
5Test::A es un identificador.
Y 5Test es reconocido como un nombre de archivo siempre que este nombre esté encerrado entre comillas en la sentencia de importación (por cierto, también tienes escrito "5Test.ex5").
Por ello, los compiladores de C/C++ añaden automáticamente un guión bajo (_) a la representación interna del nombre de la función en el archivo/módulo, de modo que el nombre final "_5TestA" no empiece por un número, lo que garantiza la compatibilidad
A100: Por ello, los compiladores de C/C++ añaden automáticamente un carácter de subrayado (_) a la representación interna del nombre de la función en un archivo/módulo, de modo que el nombre resultante "_5TestA" no empiece por un número, lo que garantiza la compatibilidad
Tal como resultó, así resultó. Sólo tienes que aceptarlo.
Este es un lugar peligroso para editar - el comportamiento del compilador puede cambiar tanto que nadie estará contento.
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
ts==true y ts!=NULL son expresiones completamente diferentes.
Además
ts==true y ts!=false son también expresiones diferentes
¿Sabes en qué se diferencian? No sólo en la sintaxis, sino también en la semántica.
Sólo que el sentido de la pregunta era que ts es un array. Y por qué este if(ts) compila y los anteriores no.
La expresión if(ts) significa que el objeto array ts existe realmente. He sacado a relucir específicamente la semántica.
¿Quiere prohibir la recopilación de este caso o bastará con una advertencia? (Por cierto, debe haber una advertencia. Si no hay aviso, es culpa nuestra, algo se ha roto)
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
Bichos, errores, preguntas
stringo, 2013.06.17 06:35
La expresión If(ts) significa que el objeto array ts existe realmente. He mencionado específicamente la semántica.
¿Quiere prohibir la recopilación de este caso o basta con una advertencia? (Por cierto, debería haber una advertencia. Si no hay aviso, es nuestra culpa, algo está roto)
void OnInit()
{
ts[0]=0;ts[1]=1;
if(ts)Print("ts[0]=0");
ts[0]=1;
if(ts)Print("ts[0]=1");
}
void OnTick()
{
}
El ServiceDesk no reconoce el error, refiriéndose a que los identificadores no pueden empezar por un número.
Pero 5Test no es un identificador, es un nombre de archivo. Y los nombres de los archivos pueden empezar por un dígito y no se ha impuesto ninguna restricción a los nombres de los archivos #import .ex5
El ServiceDesk no reconoce el error, refiriéndose a que los identificadores no pueden empezar por un número.
Pero 5Test no es un identificador, es un nombre de archivo. Y los nombres de los archivos pueden comenzar con un dígito y no se impusieron restricciones a los nombres de los archivos #import .ex5
5Test::A es un identificador.
Y 5Test es reconocido como un nombre de archivo siempre que este nombre esté encerrado entre comillas en la sentencia de importación (por cierto, también tienes escrito "5Test.ex5").
Por ello, los compiladores de C/C++ añaden automáticamente un carácter de subrayado (_) a la representación interna del nombre de la función en un archivo/módulo, de modo que el nombre resultante "_5TestA" no empiece por un número, lo que garantiza la compatibilidad
Tal como resultó, así resultó. Sólo tienes que aceptarlo.
Este es un lugar peligroso para editar - el comportamiento del compilador puede cambiar tanto que nadie estará contento.
Este es un lugar peligroso para editar - el comportamiento del compilador puede cambiar tanto que nadie estará contento.
Estoy de acuerdo.
Por favor, eche un vistazo a este ejemplo:
El compilador C/C++ tiene suficiente cerebro para distinguir la variable aX de la macro paramétrica aX( X ).
Las macros paramétricas son la única alternativa en ausencia de funciones inline y los nombres pueden solaparse a menudo en un código largo
De acuerdo.
Por favor, eche un vistazo a este ejemplo:
El compilador C/C++ en una situación similar tiene el ingenio de distinguir la variable aX de la macro paramétrica aX( X )Claro, acaba de publicar ejemplos el otro día:
Gracias. Lo he entendido con su ayuda.