A propósito, parece haver um erro no pré-processador de mql.
#define i ##nt ll;
expande-se para 'i nt ll;' e dá um erro:
'i nt' - undeclared identifier t_t_t.mq4 50 1
Quanto aos comentários na enumeração - supostamente deveriam estar a contrair-se até ao pré-processador C. Por isso, mesmo que fosse possível introduzir um comentário, seria pouco provável que isso tivesse efeito. De uma boa maneira, deve alterar a sintaxe (para _cmnt_, por exemplo) e alterar a sequência de chamada do pré-processador C com o pré-processador que puxa os comentários. As perspectivas de tais reformas são improváveis, penso eu ))
O último método necessário para escrever manualmente os espaços em branco para a enumeração e a função que devolve um conjunto de valores. Decidi descobri-lo e escrevê-lo de tal forma que já não seja necessário. Contudo, não pode ser compilado em mql, não existem macros com número variável de argumentos, mas teoricamente podem aparecer. Seja como for, eis o que tenho aqui:
// Código gerado para emum1 // enum enum1{ // q = 1, // e = 3, // t = 65, // z = 90, // }; // unsigned get_enum1_array(int *ar){ // int temp[] = { q, e, t, z, }; // if(ar != NULL) // for(unsigned i = 0; i < sizeof(temp) / sizeof(int); ++i){ // ar[i] = temp[i]; } // return sizeof(temp) / sizeof(int); // }
Artigo sobre este assunto http://jhnet.co.uk/articles/cpp_magic. Em suma, muita magia, claro. Mas a técnica pode ser útil para uma vasta gama de tarefas referentes à geração de códigos de pré-processador.
The C Pre-Processor (CPP) is the somewhat basic macro system used by the C programming language to implement features such as and which allow very simple text-substitutions to be carried out at compile time. In this article we abuse the humble to implement if-statements and iteration. Before we begin, a disclaimer: these tricks, while perfectly...
Contudo, não pode ser compilado em mql, não existem macros com número variável de argumentos, mas teoricamente podem aparecer.
Nas macros MQL5 não só há um número fixo de argumentos, como também o seu número está limitado a 8, pelo que se pode fazer um enumero para apenas 3 valores.
Quanto à aparência teórica, será provavelmente mais rápido obter uma função interna para enumerar a análise, uma vez que os criadores já prometeram fazer algo.
Nas macros MQL5 não só temos um número fixo de argumentos, como o número de argumentos é limitado a 8. Por isso, podemos fazer um enumero para apenas 3 valores.
Quanto à aparência teórica, é provavelmente mais rápido obter uma função interna para a análise de enumeração. Os programadores já prometeram que iriam pensar em algo.
Não está previsto nenhum iterador para enumerar valores de enumeração. Utilizar o método de enumeração anteriormente proposto, utilizando matriz.
Ilyas: Não está previsto nenhum iterador para enumeração de valores de enumeração. Utilizar o método anteriormente sugerido de enumeração de valores utilizando uma matriz.
Acontece que é o mesmo interruptor, mas pelo lado. Ou seja, duas listas terão de ser mantidas em qualquer caso: o próprio enumerador e a matriz (casos de troca).
E os nomes normais que estão nos comentários?
A propósito, parece haver um erro no pré-processador de mql.
expande-se para 'i nt ll;' e dá um erro:
'i nt' - undeclared identifier t_t_t.mq4 50 1
Quanto aos comentários na enumeração - supostamente deveriam estar a contrair-se até ao pré-processador C. Por isso, mesmo que fosse possível introduzir um comentário, seria pouco provável que isso tivesse efeito. De uma boa maneira, deve alterar a sintaxe (para _cmnt_, por exemplo) e alterar a sequência de chamada do pré-processador C com o pré-processador que puxa os comentários. As perspectivas de tais reformas são improváveis, penso eu ))
A propósito, parece haver um erro no pré-processador de mql.
expande-se para 'i nt ll;' e dá um erro:
Dynamic ENUM é para uso interno, a janela de ajustes não os mostra. Os nomes/comentários normais não são realmente necessários
O último método necessário para escrever manualmente os espaços em branco para a enumeração e a função que devolve um conjunto de valores. Decidi descobri-lo e escrevê-lo de tal forma que já não seja necessário. Contudo, não pode ser compilado em mql, não existem macros com número variável de argumentos, mas teoricamente podem aparecer. Seja como for, eis o que tenho aqui:
Выхлоп printf:
----enum1-----
1
3
65
90
----enum2-----
100
-3
21
----enum3-----
871
213
226
// Código gerado para emum1
// enum enum1{
// q = 1,
// e = 3,
// t = 65,
// z = 90,
// };
// unsigned get_enum1_array(int *ar){
// int temp[] = { q, e, t, z, };
// if(ar != NULL)
// for(unsigned i = 0; i < sizeof(temp) / sizeof(int); ++i){
// ar[i] = temp[i]; }
// return sizeof(temp) / sizeof(int);
// }
Artigo sobre este assunto http://jhnet.co.uk/articles/cpp_magic. Em suma, muita magia, claro. Mas a técnica pode ser útil para uma vasta gama de tarefas referentes à geração de códigos de pré-processador.
Li o fio com interesse, tudo muito fixe com macros.
Não está claro, porque é que precisamos de toda esta dança com enumeração? Posso dar-vos um exemplo prático?
É claro sobre a TF, mas que mais?
Contudo, não pode ser compilado em mql, não existem macros com número variável de argumentos, mas teoricamente podem aparecer.
Nas macros MQL5 não só há um número fixo de argumentos, como também o seu número está limitado a 8, pelo que se pode fazer um enumero para apenas 3 valores.
Quanto à aparência teórica, será provavelmente mais rápido obter uma função interna para enumerar a análise, uma vez que os criadores já prometeram fazer algo.
Nas macros MQL5 não só temos um número fixo de argumentos, como o número de argumentos é limitado a 8. Por isso, podemos fazer um enumero para apenas 3 valores.
Quanto à aparência teórica, é provavelmente mais rápido obter uma função interna para a análise de enumeração. Os programadores já prometeram que iriam pensar em algo.
Utilizar o método de enumeração anteriormente proposto, utilizando matriz.
Não está previsto nenhum iterador para enumeração de valores de enumeração.
Utilizar o método anteriormente sugerido de enumeração de valores utilizando uma matriz.