Errori, bug, domande - pagina 2529

 
A100:

Domanda sui caratteri ammissibili negli identificatori. Esempio

Il risultato:

Ricevuto un identificatore di variabile con uno spazio.

Se riscriviamo l'esempio in questo modo:

allora possiamo formulare una contraddizione: Qual è la differenza tra (1) e (2)?

Bene da un punto di vista C/C++ c'è un errore in µl. Qualsiasi numero di spazi/commenti può essere inserito prima/dopo l'operatore ##, i token saranno scomposti prima e poi il preprocessore inizierà, cioè non vedrà nemmeno questi spazi, lo standard hash_hash ha un esempio:

#define  hash_hash # ## #
#define  mkstr(a) #  a
#define  in_between(a) mkstr(a)
#define  join(c, d) in_between(c hash_hash d)
char p[] = join(x, y);    // equivalent tochar p[] = "x ## y";
#define  MACRO( x )              x##:AAA

solo i token che insieme formano un token valido possono essere utilizzati.

ZS: alcune persone dicono che c/s++ non è un'autorità per loro, perché continuano a citarli, e comunque è mcl, non ..., forse hanno una spiegazione adeguata?

 
Vict:

forse hanno la spiegazione giusta?

Di solito hanno una spiegazione: è stato progettato da sviluppatori saggi)
 
Quando si lavora con grandi file sorgente, ME è molto lento - due file da 30 megabyte, anche il passaggio da uno all'altro causa lentezza, specialmente se si copia una grande quantità di codice da uno all'altro. In generale, l'editing di tali file vi fa lavorare al rallentatore - noioso.
 
Aleksey Vyazmikin:
Quando si lavora con grandi file sorgente ME diventa molto lento - due file da 30 MB, anche il passaggio da uno all'altro causa lentezza, specialmente se si copiano grandi quantità di codice da uno all'altro. E in generale, l'editing di tali file porta a lavorare al rallentatore - noioso.

30MB di testo non sono chiaramente necessari per il lavoro. Si disturbi una volta, poi metta questi dati in un incluido.

 
Andrey Khatimlianskii:

30MB di testo non sono chiaramente necessari per il lavoro. Torturalo una volta, poi metti i dati in un incluido.

I dati sono di tipo unico e soggetti a modifiche costanti; costituiscono la base della modifica dell'EA.

 
I commenti non pertinenti a questo argomento sono stati spostati in"OOP, modelli e macro in mql5, consigli e trucchi del mestiere".
 
Aleksey Vyazmikin:
Quando si lavora con grandi file sorgente ME si blocca molto - due file di 30 MB, anche il passaggio da uno all'altro causa blocchi, specialmente quando si copia una grande quantità di codice da uno all'altro. E in generale, l'editing di tali file porta a lavorare al rallentatore - noioso.

Penso che tutti gli editor di testo si comportino in questo modo

devi comunque spezzare un codice sorgente così grande, o riscriverne una parte in una libreria

 

Per favore, aiutatemi con un piccolo compito. Ho bisogno di uno script che chiami LABEL, che lampeggerà ad un certo intervallo, e questo è tutto. La frequenza del lampeggiamento e la specificazione delle coordinate la farò io stesso, la cosa principale per me è la funzione stessa.

Ho trovato un esempio, l'ho riscritto per le mie esigenze, ma non funziona. Lampeggia a piacere, poi ogni secondo, poi scompare per qualche secondo. E vorrei che lo script venisse eseguito finché non lo si ferma, non un certo numero di volte.

for(int i=0; i<50; i++)
   {
      if(!ObjectCreate(0,"Blink",OBJ_LABEL,0,0,0))
   {
      Print("Not Create! Error - ",GetLastError());
   }
   ObjectSetInteger(0,"Blink",OBJPROP_XDISTANCE,50);
   ObjectSetInteger(0,"Blink",OBJPROP_YDISTANCE,50);
   ObjectSetInteger(0,"Blink",OBJPROP_CORNER,CORNER_RIGHT_UPPER);
   ObjectSetString(0,"Blink",OBJPROP_TEXT,"Test");
   ObjectSetString(0,"Blink",OBJPROP_FONT,"Arial");
   ObjectSetInteger(0,"Blink",OBJPROP_FONTSIZE,18);
   ObjectSetDouble(0,"Blink",OBJPROP_ANGLE,0);
   ObjectSetInteger(0,"Blink",OBJPROP_ANCHOR,ANCHOR_RIGHT_UPPER);
   ObjectSetInteger(0,"Blink",OBJPROP_COLOR,Red);
   ObjectSetInteger(0,"Blink",OBJPROP_BACK,false);
   ObjectSetInteger(0,"Blink",OBJPROP_SELECTABLE,false);
   ObjectSetInteger(0,"Blink",OBJPROP_SELECTED,false);
   ObjectSetInteger(0,"Blink",OBJPROP_HIDDEN,true);
   ObjectSetInteger(0,"Blink",OBJPROP_ZORDER,0);
   
   Sleep(200);
   
   ObjectDelete(0,"Blink");
   
   Sleep(200);
   }
 

Improbabile che venga corretto, ma un errore in generale:

#define  A world
#define  MAKESTR(L) #L

void OnStart() {
   Alert( MAKESTR(A) );
}

Allarme: mondo

previsto: Allarme: A

 
Igor Makanu:

Penso che tutti gli editor di testo si comportino in questo modo

Tuttavia, è necessario cercare di rompere un codice sorgente così enorme in parti, o riscrivere parte del codice nella libreria

EditPad Lite funziona alla grande con file giganteschi, copiando e modificando - mi è piaciuta molto l'utilità. Il che significa che è realistico. Capisco il carico iniziale all'apertura, o se non si lavora con una scheda per molto tempo, ma ora anche la modifica di un file è molto difficile.