Errores, fallos, preguntas - página 1768
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
Esto sólo es posible en un compilador tonto. Tú mismo lo sabes.
using namespace std;
struct S
{
S operator +(const S&) {cout << "operator +\n"; return S{};}
};
S operator ""_s(const char*, size_t) {cout << "literal operator\n"; return S{};}
int main()
{
cout << "___literal concatenation example___\n";
S s = "sd"_s "sf"_s;
cout << "___operator+ example___\n";
S s2 = "sd"_s + "sf"_s;
}
___Ejemplo de concatenación literal___
operador literal
___operador+ ejemplo___
operador literal
operador literal
operador +
Como puede ver, el operador+ no ha sido sustituido por la concatenación en el segundo caso (creado para literales con posterior adición en tiempo de ejecución). El compilador simplemente no puede recortarlo porque el programador tiene demasiadas posibilidades, lo que limita enormemente el alcance de la optimización. Esto no es MKL, por supuesto, puede ser diferente, pero la propia afirmación: "un compilador normal lo hará todo por mí" es errónea.Esto no es MQL, por supuesto, puede ser diferente, pero la afirmación "un compilador normal lo hará todo por mí" es errónea.
Cansado de perder tiempo y dinero: el optimizador se queda colgado en la última pasada. Los agentes no hacen nada, todo está en la fase autorizada. Hay silencio en la bitácora. No tiene sentido habilitar/deshabilitar agentes, todo empieza de cero después de reiniciar la optimización.
¿Quién se ha enfrentado a este problema? ¿Cómo combatirlo?
Línea mágica
Secuencia de operaciones en MetaEditor\1495 a una resolución de pantalla de 1024x768 :
- Abrir el archivo adjunto
- Mueva el control deslizante horizontal hacia la derecha (como en la imagen)
- En la 3ª línea haga clic en /*12345*/
Otros ajustes: Servicio/Configuración/General/Tabulación 4 caracteresAl intentar convertir una cadena en un número mediante StringToInteger(), si la cadena no contiene un número, devuelve 0 sin error (GetLastError() = 0). Si los parámetros de entrada contienen una cadena y el usuario ha especificado los valores incorrectamente, la función devolverá un valor incorrecto y no se mostrará ningún error. Esto es malo.
Además, si la cadena contiene una representación numérica incorrecta, por ejemplo, 5o (en lugar de 50), la función devolverá el valor 5 sin generar un error. No sólo que no es 0, sino que la función rompe la cadena como 5, lo que de nuevo es incorrecto.
Por favor, queridos desarrolladores, mejoren la función añadiendo códigos de error o, si no puede analizar la cadena, devuelvan el valor LONG_MAX + el error para que podamos determinar lo que está mal. No puedes hacerlo ahora.
Comprobación del código del script:
#property script_show_inputs
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
input string value="05";
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
const long iValue=StringToInteger(value);
Print("iValue = ",iValue,", lastError = ",GetLastError());
}
//+------------------------------------------------------------------+
Implementa tu propia versión de la función - no debería llevar más de 10 minutos.
No cambiaremos el comportamiento de las funciones del sistema.
Implementa tu propia versión de la función - no debería llevar más de 10 minutos.
No cambiaremos el comportamiento de las funciones del sistema.
Entonces, ¿no cree que es necesario refinar las funciones, especialmente las que pueden mentir de forma evidente?
Incluso si sólo añadiéramos códigos de error, estaría bien, pero ahora estás sugiriendo que reinventemos la rueda. No es complicado, por supuesto, pero sí una bicicleta.
¿Así que no crees que sea necesario refinar las funciones, especialmente las que obviamente pueden mentir?
Incluso si sólo se añadieran los códigos de error, estaría bien, pero ahora se está proponiendo reinventar la rueda. No es complicado, por supuesto, pero sí una bicicleta.
Error de compilación
struct S {};