A100: Si la diferencia es enorme, ¿por qué ambas variantes compilan normalmente en C++?
Aquí no hay ninguna autoridad en C++ en este caso, ya que basé mis conclusiones en la lógica. Arriba, he rehecho el ejemplo con una dereferencia.
Todo lo que tienes que hacer es hacer esa sustitución
// typedef void (*fn)();typedefvoid (*fn123)();
La dereferencia será completamente diferente. Puedes pedirle al compilador que sea "más inteligente que un tonto" y actúe como lo hace en C++. Pero esta solución es realmente discutible.
Es decir, esa "ayuda" puede implementarse en el compilador, pero se muestra la diferencia de enfoques.
En el typedef original es un alias para un tipo, no otro tipo, así que es realmente una gran pregunta para los desarrolladores por qué el nombre del tipo muestra un alias en lugar de un tipo.
Комбинатор: En el typedef original es un alias para un tipo, no otro tipo, así que es realmente una gran pregunta para los desarrolladores por qué el nombre del tipo muestra un alias en lugar de un tipo.
Durante una sola ejecución y visualización los registros se llenan de miles de entradas de este tipo
2017.08.1620:26:06.4772017.08.0110:04:06 order modified [#253 buy limit 1.00 EURUSD at 1.18159]
2017.08.1620:26:06.4772017.08.0110:04:06 order modified [#253 buy limit 1.00 EURUSD at 1.18159]
2017.08.1620:26:06.4772017.08.0110:04:06 order modified [#253 buy limit 1.00 EURUSD at 1.18159]
2017.08.1620:26:06.4772017.08.0110:04:06 order modified [#253 buy limit 1.00 EURUSD at 1.18159]
2017.08.1620:26:06.4772017.08.0110:04:06 order modified [#253 buy limit 1.00 EURUSD at 1.18159]
2017.08.1620:26:06.4772017.08.0110:04:06 take profit triggered #251 sell 1.00 EURUSD 1.18166 tp: 1.18159 [#254 buy 1.00 EURUSD at 1.18159]
2017.08.1620:26:06.4772017.08.0110:04:06 deal #251 buy 1.00 EURUSD at 1.18159 done (based on order #254)
2017.08.1620:26:06.4772017.08.0110:04:06 deal performed [#251 buy 1.00 EURUSD at 1.18159]
2017.08.1620:26:06.4772017.08.0110:04:06 order performed buy 1.00 at 1.18159 [#254 buy 1.00 EURUSD at 1.18159]
2017.08.1620:26:06.4772017.08.0110:04:06 order [#253 buy limit 1.00 EURUSD at 1.18159] triggered
Y hay que esperar largos segundos para que aparezcan. Y sólo me interesa el registro, que hago yo mismo en OnDeinit. ¿Por qué tengo que forzar cada vez estos registros, que se leen en casos MUY raros? Hay un elemento de menú especial en el Visor de Registros del Agente. Y la ausencia de estos registros durante la optimización no hace que nadie se sienta incompleto. Entonces, ¿por qué toda esta molestia en cientos de megabytes (especialmente si algún EA malo está tratando de abrir un acuerdo en cada tic, obteniendo el modo de llenado sin soporte)?
¿Es posible separar las moscas de las chuletas en el probador? Lo mismo que en el terminal: un registro para las impresiones del propio EA y un registro del terminal. Cansado de esperar durante largos segundos mientras esas decenas de miles de mensajes innecesarios en el registro para cada punto de orden para pasar y se puede ver las últimas líneas de finalización de backtest.
Ha pasado mucho tiempo. Puede que no sea el único molesto.
Si la diferencia es enorme, ¿por qué ambas variantes compilan normalmente en C++?
Aquí no hay ninguna autoridad en C++ en este caso, ya que basé mis conclusiones en la lógica. Arriba, he rehecho el ejemplo con una dereferencia.
Todo lo que tienes que hacer es hacer esa sustitución
La dereferencia será completamente diferente. Puedes pedirle al compilador que sea "más inteligente que un tonto" y actúe como lo hace en C++. Pero esta solución es realmente discutible.
Es decir, esa "ayuda" puede implementarse en el compilador, pero se muestra la diferencia de enfoques.
está bien. ¿Qué diferencia hay?
aparentemente, f no se ve como un puntero a una función en un simple pase al compilador.
aparentemente, cuando se pasa al compilador, f no se toma como un puntero a una función.
aparentemente, en una simple pasada al compilador, f no se toma como un puntero a una función.
Y no debería, al menos por la ambigüedad.
Y no debería, aunque sólo sea por la ambigüedad
Y no debería, aunque sólo sea por la ambigüedad
Error durante la compilación
Si (1) está bien, ¿por qué un error en (2) si (3) está bien?En el typedef original es un alias para un tipo, no otro tipo, así que es realmente una gran pregunta para los desarrolladores por qué el nombre del tipo muestra un alias en lugar de un tipo.
Estoy de acuerdo.
A100:
Por favor, explique el tipo de. No he podido encontrar una buena explicación para los programadores sin experiencia.
Y hay que esperar largos segundos para que aparezcan. Y sólo me interesa el registro, que hago yo mismo en OnDeinit. ¿Por qué tengo que forzar cada vez estos registros, que se leen en casos MUY raros? Hay un elemento de menú especial en el Visor de Registros del Agente. Y la ausencia de estos registros durante la optimización no hace que nadie se sienta incompleto. Entonces, ¿por qué toda esta molestia en cientos de megabytes (especialmente si algún EA malo está tratando de abrir un acuerdo en cada tic, obteniendo el modo de llenado sin soporte)?
¿Es posible separar las moscas de las chuletas en el probador? Lo mismo que en el terminal: un registro para las impresiones del propio EA y un registro del terminal. Cansado de esperar durante largos segundos mientras esas decenas de miles de mensajes innecesarios en el registro para cada punto de orden para pasar y se puede ver las últimas líneas de finalización de backtest.
Ha pasado mucho tiempo. Puede que no sea el único molesto.