Errori, bug, domande - pagina 2871

 
A100:

L'output sarà esattamente un letterale di stringa. Ecco la prova che non c'è nessuna stampa:

Non credo all'avvertimento del compilatore!

'+' non è una stringa! È un tipo di carattere, in mql ushort 2 byte

punto.

Questo è più probabilmente un errore nella descrizione dell'avvertimento.

 
Roman:

Non credo all'avvertimento del compilatore!
Non è una stringa, è un tipo di carattere!

È più probabile che sia un errore nella descrizione dell'avviso.

Non è una questione di fede e congetture - abbiamo bisogno di prove: un esempio senza una stampa che provi che typename restituisce un letterale non stringa c'è? Quando c'è, continuiamo.

 
A100:

Non è una questione di fede e congetture - abbiamo bisogno di prove: c'è un esempio senza una stampa che provi che viene restituito un letterale non stringa? Quando c'è, continuiamo.

Anche se typename restituisce un nome, ecco perché ritorna come stringa
forse, ma che differenza fa?
Hai ilnome del tipo e ce l'hai. Non capisco cosa vuoi dimostrarmi?
Che typename restitu isceuna stringa di tipo, beh, logicamente, restituisce un nome.
Volevo dire che restituisce il nome del tipo, cioè il tipo è scritto in lettere ))

Non
ho pensato affatto al tipo di ritorno e vi siete aggrappati ad esso.
Comunque, non c'è niente da discutere.
 
Roman:
Anche se typename restituisce un nome, quindi ritorna come stringa
forse sì, ma che differenza fa?

Sembra che tu abbia superato la fase della negazione... la fase della consapevolezza sta iniziando. Vi lascio a questo.

 
A100:

Sembra che tu abbia superato la fase della negazione... la fase della consapevolezza sta iniziando. Vi lascio a questo.

Ancora una volta, non ho affermato che il tipo in sé sta tornando, ho affermato che il NOME del tipo sta tornando.
Che tipo è il NOME di ritorno, non ci ho pensato affatto nella nostra conversazione.
Ecco perché la fase di realizzazione non è coinvolta; è chiaro che il nome è una stringa, se è una stringa.
Ma c'è anche mql ushort, dannazione, così ho dubitato, che in typename spingeranno una stringa di 12 byte.
Se il tipo stesso fosse restituito, sarebbe uno spasso a tutti ))
Al volo potrebbero essere definite delle variabili ))
Non so se è possibile in programma compilato, infatti è la solita allocazione di memoria.

 
A100:

Questo è nei linguaggi astratti, ma MQL non ha astrattezza - presumibilmente non può essere combinato con la velocità

Ecco un altro modo di controllare, 12 byte come tipo di stringa

Print(sizeof(typename()));
 
Roman:

Ecco un altro modo di controllare, 12 byte come tipo di stringa

A maggior ragione, significa che la Documentazione era corretta (ma anche questa è una prova indiziaria)

 
Ho imbrogliato il sistema, dopo tutto.

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Bug, bug, domande

A100, 2020.10.09 00:38

Errore di compilazione:
void OnStart()
{
    Print(typename("ushort"));      //(1) нормально
    Print(typename(typename('+'))); //(2) Error: 'typename' - unexpected token
}

Doppio typename

template<typename T>
T f( T ) { return typename(T); }
void OnStart()
{
        Print(f(typename('+')));
}

Risultato: stringa

Quindi è una prova diretta, non indiretta.
 
A100:

A maggior ragione, la documentazione è corretta.

Sì, nella documentazione dei template, tutto è descritto correttamente.
typename è progettato per i template, quindi restituisce la stringa del tipo
Solo che non hai capito che inizialmente avevo scritto che restituisce il tipo NOME, non TIPO nome ))
E hai iniziato a spiegarmi la stringa di ritorno)
Ero confuso e ho dubitato, e ho pensato che ushort può restituire.
Ma no, un filo comunque.

 
Roman:

Naturalmente è colpa mia, non leggo la documentazione e ho inventato il post

(typename)J

Forum sul trading, sistemi di trading automatico e test di strategie di trading

Bug, bug, domande

Romano, 2020.10.07 17:20

Sì, anche questo è un errore di compilazione

#define  J '+'          // char

void OnStart()
{
    Print((typename)J);
}
#define  J '+'          // char

void OnStart()
{
    Print((typename)(J));
}