Errori, bug, domande - pagina 1964

 
fxsaber:
...

È stato davvero un lungo periodo di tempo. Forse non sono l'unico ad essere infastidito.


Sì, non sei l'unico. )

 
fxsaber:

Si prega di spiegare il typeof. Non ho trovato nessuna buona spiegazione per i programmatori inesperti.

Ho cancellato queste righe (accidentalmente).

Hai https://www.mql5.com/ru/forum/1111/page1983#comment_5616331 una voce simile come questa

template<typename T>
void g( T Value ) { Print(typename(Value)); }
Differenza irrilevante: non c'è Valore, perché è ridondante
Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2017.08.16
  • www.mql5.com
Форум алго-трейдеров MQL5
 
typedef void (*fn)();
void f() {}
void OnStart()
{
        fn ff = f;                   //Результат:
        Print( "1:", typename( ff )); //void(*fn)()
        Print( "2:", typename( f  )); //пусто
}
Vuoto... perché?
 

Ricerca di file: stringa di ricerca: 'A\t\tB A

Caratteri di tabulazione mancanti nella frase risultante: Cerca 'AB A' nella cartella 'W:'

Non influenza i risultati della ricerca, ma può causare confusione.



Поиск - Инструменты - Пользовательский интерфейс - Справка по MetaEditor
Поиск - Инструменты - Пользовательский интерфейс - Справка по MetaEditor
  • www.metatrader5.com
В данном окне отображаются результаты глобального поиска и поиска в файлах. Информация представляется в виде таблицы со следующими полями...
 
A100:
Vuoto... perché?
void f() {}
void f( int ) {}
 
ffxsaber:

Hai aggiunto di nuovo l'ambiguità

#ifdef __cplusplus
void f() {}
void f( int ) {}
void OnStart()
{
        void *ff = &f; //Error: E2336
}
#endif
mentre f era solo, non c'era ambiguità
 
A100:

Hai aggiunto di nuovo l'ambiguità.

finché c'era una f, non c'era ambiguità

Esattamente! Ora posso chiamare f tutti i tipi di funzioni e una variabile contemporaneamente. Ci deve essere un po' di buon senso in queste ambiguità, per non causare errori casuali. A mio parere, è logico imbrogliare emettendo una stringa vuota a typename f, piuttosto che causare problemi quando accidentalmente si prende e si definisce un'altra f.

 
fxsaber:

Esattamente! Ora posso chiamare f tutti i tipi di funzioni e variabili contemporaneamente.

Quindi forse questa possibilità è la fonte degli errori nascosti!

#ifdef __cplusplus
void f() {}
static char f; //Error: E2238 
#endif
 
A100:

Quindi forse è questa la fonte dei bug nascosti!

Mi piace questa possibilità! Dovete solo essere consapevoli di quello che state facendo.

 
fxsaber:

A proposito... IsStopped() restituisce un bool

void OnStart()
{
        Print( typename( IsStopped())); //bool
        Print(           IsStopped() ); //0
        Print( typename( _StopFlag  )); //int
}

Questa stampa distorce il risultato (0 invece di falso). In ogni caso la contraddizione non è (solo) nella documentazione

https://www.mql5.com/ru/forum/1111/page1980#comment_5612130