Curiosidade sobre a sintaxe do MetaQuotes

Para adicionar comentários, por favor Faça o login ou registrar
AnarcoPhysic
186
AnarcoPhysic  

Forunistas,


Em uma parte do código, tinha-se


int OnCalculate(Parametros)
{
//...
 const int lapsoVela = PeriodSeconds(Period()); //pau --> Compilador acusa 'lapsoVela' - local variables cannot be used  

const static int lapsoVela = PeriodSeconds(Period()); //Ok adicionando a palavra-chave static 
//...
 static datetime tempao =(TimeCurrent())% (datetime )lapsoVela; //Causa do erro

//..
}

Qual é a diferença feita pelo static? Static só pode inicializar static? Se sim, por qual razão?

Flavio Jarabeck
134113
Flavio Jarabeck  
AnarcoPhysic:

Forunistas,


Em uma parte do código, tinha-se


Qual é a diferença feita pelo static? Static só pode inicializar static? Se sim, por qual razão?

oir que vc está usando CONST ??
AnarcoPhysic
186
AnarcoPhysic  
Minions Labs:
oir que vc está usando CONST ??

lapsoVela é uma variável constante. Uma vez inicializada não muda de valor. Imagino que, isso, pode trazer benefício ao código, abrir possibilidade de otimização para o compilador. me engano?

Flavio Jarabeck
134113
Flavio Jarabeck  
AnarcoPhysic:

lapsoVela é uma variável constante. Uma vez inicializada não muda de valor. Imagino que, isso, pode trazer benefício ao código, abrir possibilidade de otimização para o compilador. me engano?

Você já experimentou recompilar sem o CONST?

Uma coisa é ter um valor constante durante a COMPILAÇÃO, outra é atribuir a uma variável, em RUNTIME, com valores que somente serão conhecidos em RUNTIME. Acho que você está misturando completamente as coisas...

A suposta COMPILA"CÃO de código do MQL5 (há divergências de opiniões de como isso acontece, mas vamos assumir que é PURA COMPILAÇÃO), não pode ter valores atribu';idos em tempo de RUNTIME. Não faz sentido.


;)

Para adicionar comentários, por favor Faça o login ou registrar