Errores, fallos, preguntas - página 1003
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
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.