Caratteristiche del linguaggio mql5, sottigliezze e tecniche - pagina 120

 
Credo che abbiano voluto filtrare la riconnessione. Non ricordo come è finita.
 
Andrey Khatimlianskii:
Sembra che abbiano voluto filtrare l'abilitazione ripetuta. Non ricordo come è finita.

Sembra che sia sempre stato filtrato in questo modo. Almeno per quanto posso ricordare. Ma #ifndef è ancora più sicuro, perché se lo stesso file è incluso attraverso percorsi diversi (link simbolico/duro), ME non capisce che si tratta dello stesso file.

D'altra parte questa è anche un'arma a doppio taglio: se si scopre che i file sono davvero diversi (versioni diverse), allora ci potrebbe essere confusione, nessuno sa quale file è incluso, quindi gli sviluppatori hanno bisogno di sistemare questo, di filtrare non per percorso simbolico del file, ma per percorso reale.

 
Forse la domanda riguarda le biblioteche e non gli inluders?
 
SemenTalonov:

è strano che le direttive siano messe e non usate

Uso simile, ma è quasi folle prescriverlo per ogni mqh.

Andrey Khatimlianskii:
Sembrava che volessero filtrare la riabilitazione. Non ricordo come è finita.

Il reinserimento è ignorato.

TheXpert:
Forse la domanda riguarda le biblioteche e non gli inluders?

Non ho mai lavorato con le librerie ex4/5, quindi mi riferivo agli inluders.

 
fxsaber:

La riattivazione viene ignorata.

Qual è il problema con

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

Caratteristiche del linguaggio mql5, sottigliezze e trucchi

fxsaber, 2019.01.14 17:30

Cosa fare quando si collegano librerie, ognuna delle quali collega le stesse librerie al suo interno?


?

 
Andrey Khatimlianskii:

Qual è il problema allora?

Non c'è niente di male ora, ma è stato suggerito di cancellare se ho capito bene.

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

Peculiarità del linguaggio mql5, consigli e trucchi

Alexey Navoykov, 2019.01.14 15:26

In C++ il codice viene processato dal compilatore rigorosamente dall'alto verso il basso, quindi tutto ciò che parte dall'alto è già inizializzato e non si può indirizzare verso il basso. E dato che gli sviluppatori hanno introdotto alcune regole proprie qui, lasciamo che assicurino il corretto ordine di esecuzione del codice.

 
fxsaber:

Ora va bene, ma è stato suggerito di cancellarlo, se ho capito bene.

Qual è il legame con gli inludi?
 
fxsaber:

Non c'è niente di male in questo adesso, ma è stato suggerito di cancellarlo, se ho capito bene.

No, è stato frainteso.

È stato suggerito che il preprocessore elabori il codice in ordine. In questo caso, gli inludi sono inseriti nel codice al posto della prima menzione nello stesso modo.
 
Andrey Khatimlianskii:

No, hai sbagliato.

Il preprocessore è stato suggerito per gestire il codice in ordine. Allo stesso tempo, gli inludi sono inseriti nel codice al posto della prima menzione.

Il punto è che se le funzioni che volete usare sono specificate nell'inlude, dovete scriverle secondo il suggerimento, se l'inlude è sotto.

 
fxsaber:

Il punto è che se avete specificato delle funzioni negli inludi che userete, dovete scriverle secondo l'ordine suggerito, se gli inludi sono sotto.

//gcc 5.4.0

int main(void)
{
    g();
    return 0;
}

void g() {f();}

void f() {}

Hai detto dell'ordine, ma hai dimenticato il multipass.

e sembra che ci siano un paio di UB con l'ordine

Motivazione: