sion: Solo che il punto della domanda era che ts è un array. E perché questo if(ts) si compila e i precedenti no.
L'espressione if(ts) significa che l'oggetto array ts esiste effettivamente. Ho tirato in ballo specificamente la semantica.
Volete proibire la compilazione di questo caso o basterà un avvertimento? (A proposito, ci deve essere un avvertimento. Se non c'è un avvertimento, è colpa nostra, qualcosa si è rotto)
L'espressione If(ts) significa che l'oggetto array ts esiste effettivamente. Ho menzionato specificamente la semantica.
Volete proibire la compilazione di questo caso o è sufficiente un avvertimento? (A proposito, dovrebbe esserci un avvertimento. Se non c'è un avvertimento, è colpa nostra, qualcosa è rotto)
ServiceDesk non riconosce l'errore, riferendosi al fatto che gli identificatori non possono iniziare con un numero.
Ma 5Test non è un identificatore, è un nome di file. E i nomi dei file possono iniziare con una cifra e non sono state imposte restrizioni sui nomi dei file #import .ex5
ServiceDesk non riconosce l'errore, riferendosi al fatto che gli identificatori non possono iniziare con un numero.
Ma 5Test non è un identificatore, è un nome di file. E i nomi dei file possono iniziare con una cifra e non sono state imposte restrizioni sui nomi dei file #import .ex5
5Test::A è un identificatore.
E 5Test è riconosciuto come nome di un file, purché questo nome sia racchiuso tra virgolette nella frase di importazione (a proposito, hai scritto anche "5Test.ex5").
Questo è il motivo per cui i compilatori C/C++ aggiungono automaticamente un underscore (_) alla rappresentazione interna del nome della funzione nel file/modulo, in modo che il nome finale "_5TestA" non inizi con un numero, il che assicura la compatibilità
A100: Ecco perché i compilatori C/C++ aggiungono automaticamente un carattere di sottolineatura (_) alla rappresentazione interna del nome della funzione in un file/modulo, in modo che il nome risultante "_5TestA" non inizi con un numero, il che assicura la compatibilità
Come è venuto fuori, così è venuto fuori. Devi solo accettarlo.
Questo è un posto pericoloso da modificare - il comportamento del compilatore può cambiare così tanto che nessuno sarà contento.
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
ts==vero e ts!=NULL sono espressioni completamente diverse.
Inoltre
ts==vero e ts!=falso sono anche espressioni diverse
Sapete come sono diversi? Non solo nella sintassi, ma anche nella semantica.
Solo che il punto della domanda era che ts è un array. E perché questo if(ts) si compila e i precedenti no.
L'espressione if(ts) significa che l'oggetto array ts esiste effettivamente. Ho tirato in ballo specificamente la semantica.
Volete proibire la compilazione di questo caso o basterà un avvertimento? (A proposito, ci deve essere un avvertimento. Se non c'è un avvertimento, è colpa nostra, qualcosa si è rotto)
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Bug, bug, domande
stringo, 2013.06.17 06:35
L'espressione If(ts) significa che l'oggetto array ts esiste effettivamente. Ho menzionato specificamente la semantica.
Volete proibire la compilazione di questo caso o è sufficiente un avvertimento? (A proposito, dovrebbe esserci un avvertimento. Se non c'è un avvertimento, è colpa nostra, qualcosa è rotto)
void OnInit()
{
ts[0]=0;ts[1]=1;
if(ts)Print("ts[0]=0");
ts[0]=1;
if(ts)Print("ts[0]=1");
}
void OnTick()
{
}
ServiceDesk non riconosce l'errore, riferendosi al fatto che gli identificatori non possono iniziare con un numero.
Ma 5Test non è un identificatore, è un nome di file. E i nomi dei file possono iniziare con una cifra e non sono state imposte restrizioni sui nomi dei file #import .ex5
ServiceDesk non riconosce l'errore, riferendosi al fatto che gli identificatori non possono iniziare con un numero.
Ma 5Test non è un identificatore, è un nome di file. E i nomi dei file possono iniziare con una cifra e non sono state imposte restrizioni sui nomi dei file #import .ex5
5Test::A è un identificatore.
E 5Test è riconosciuto come nome di un file, purché questo nome sia racchiuso tra virgolette nella frase di importazione (a proposito, hai scritto anche "5Test.ex5").
Ecco perché i compilatori C/C++ aggiungono automaticamente un carattere di sottolineatura (_) alla rappresentazione interna del nome della funzione in un file/modulo, in modo che il nome risultante "_5TestA" non inizi con un numero, il che assicura la compatibilità
Come è venuto fuori, così è venuto fuori. Devi solo accettarlo.
Questo è un posto pericoloso da modificare - il comportamento del compilatore può cambiare così tanto che nessuno sarà contento.
Questo è un posto pericoloso da modificare - il comportamento del compilatore può essere cambiato così tanto che nessuno sarà contento.
Sono d'accordo.
Date un'occhiata a questo esempio:
Il compilatore C/C++ ha abbastanza cervello per distinguere la variabile aX dalla macro parametrica aX( X ).
Le macro parametriche sono l'unica alternativa in assenza di funzioni in linea e i nomi possono spesso sovrapporsi in un codice lungo
D'accordo.
Date un'occhiata a questo esempio:
Il compilatore C/C++ in una situazione simile ha l'arguzia di distinguere la variabile aX dalla macro parametrica aX( X )Certo, ho appena pubblicato degli esempi l'altro giorno:
Grazie! L'ho capito con il tuo aiuto.