Bug del compilatore con il parametro template = void* - pagina 8

 
A100:

Se non l'ho esposto correttamente - per favore correggetemi - ho esposto il mio concetto brevemente e senza ambiguità dove sono necessari avvertimenti sulle parentesi

Non è corretto. L'uso delle parentesi riduce la probabilità di errori.

Un avvertimento è un messaggio che relativamente molti codificatori fanno errori quando scrivono in questo modo: il risultato non è quello che volevano. Questo si applica a tutti gli avvisi, non solo alle parentesi.

 
fxsaber:

Sbagliato. L'uso delle parentesi riduce la possibilità di errori.

Un avvertimento è un messaggio che relativamente molti codificatori fanno errori quando scrivono in questo modo: il risultato non è quello che volevano. Questo si applica a tutti gli avvisi, non solo alle parentesi.

Questo non è un concetto, ma un ragionamento generale.

La domanda è di carattere pratico e non è di carattere astratto ma molto concreto: dove servono le parentesi? Dappertutto? O selettivamente? Allora chi determina la selezione? Il fxsaber? Può formularlo senza ambiguità? Affinché questo concetto possa essere implementato nel compilatore

L ' ho formulato come: "solo dove non se ne può fare a meno".

 
pavlick_:

ZS: ma se lo facessi, lo farei il più simile possibile alla libreria standard plus (nomi, comportamento, ecc.), quindi non ho scelta. Perché costruire un'altra specifica quando tutto è già scritto?

Se così fosse, gli array di oggetti e puntatori non sono affatto necessari in mql. Le liste dinamiche e il looping per ciascuno permettono di risolvere il 99% dei compiti nel trading nel modo più compatto e conveniente. Non c'è nemmeno bisogno di una classe di lista separata. Tutte queste caratteristiche extra sono necessarie su una scala più grande di quella che abbiamo di solito qui...

 
A100: Può articolare senza ambiguità?

dove rendono più facile la comprensione del codice

 
TheXpert:

dove rendono più facile la comprensione del codice

In modo che il concetto possa essere implementato nel compilatore. Nessuno vieta le parentesi inutili. La domanda riguarda gli avvertimenti non necessari

 
A100:

La questione è pratica, non astratta, ma concreta: dove servono le staffe? Dappertutto? O selettivamente? Allora chi determina la selezione? Il fxsaber? Può formularlo senza ambiguità?

La domanda era se il compilatore MT4 è giusto

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

Nuova versione della piattaforma MetaTrader 5 build 1930: finestre grafiche fluttuanti e librerie .Net in MQL5

fxsaber, 2018.12.11 19:44

#property strict
   // from MT5: Canvas.mqh
   uint Pixel = (r<<16|g<<8|b<<0|255<<24) &0xffffffff; //check operator precedence for possible error; use parentheses to clarify precedence


Giusto in questo caso. Le parentesi non sono necessarie qui, ma auspicabili, poiché è probabile che ci sia un errore. È sulla base di tali probabilità che il compilatore emette avvertimenti di qualsiasi tipo. Sono stati inventati per un motivo.

 
fxsaber:

In questo caso, ha ragione.

Gli esempi specifici non sono necessari in questa fase (puoi darne quanti ne vuoi). Ciò di cui c'è bisogno è un singolo concetto che può essere implementato nel compilatore (quando dovrebbero essere emessi avvertimenti se mancano le parentesi)

 
A100:

Non hai bisogno di esempi specifici in questa fase (puoi darne quanti ne vuoi). Quello che serve è un concetto che può essere implementato nel compilatore

È già abbastanza ben implementato. È solo che MT4 si è rivelato più intelligente.

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

Nuova versione di MetaTrader 5 build 1930: Finestra del grafico fluttuante e libreria .Net in MQL5

fxsaber, 2018.12.11 20:22

Questi non sono affatto messaggi ridondanti. Ci sono sempre delle priorità.

bool a = r && g || b; // check operator precedence for possible error; use parentheses to clarify precedence

Il compilatore avverte già i cinque di un possibile errore.

 
fxsaber:

È già abbastanza ben implementato. È solo che MT4 si è rivelato più intelligente.

Questo avvertimento è stato dato solo perché MQL5 ha priorità diverse. Non perché .. .

Cioè, il concetto: "Gli avvertimenti sono probabilmente necessari in quei posti dove MQL4 era diverso prima". Così, gli sviluppatori hanno corretto i loro precedenti errori. non più di questo

 
Sarebbe più comodo se il compilatore si offrisse di sistemare automaticamente le parentesi "correttamente", in modo simile a come fa Excel quando si scrive una formula incompleta.
Motivazione: