Erros, bugs, perguntas - página 1964

 
fxsaber:
...

Tem sido realmente muito tempo a chegar. Talvez eu não seja o único que está aborrecido.


Sim, não é o único. )

 
fxsaber:

Por favor, explique o tipo de. Não consegui encontrar nenhuma boa explicação para programadores inexperientes.

Apaguei estas linhas (acidentalmente).

Tem https://www.mql5.com/ru/forum/1111/page1983#com ment_5616331 uma entrada semelhante como esta

template<typename T>
void g( T Value ) { Print(typename(Value)); }
Diferença sem importância: não há Valor, porque é redundante
Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2017.08.16
  • www.mql5.com
Форум алго-трейдеров MQL5
 
typedef void (*fn)();
void f() {}
void OnStart()
{
        fn ff = f;                   //Результат:
        Print( "1:", typename( ff )); //void(*fn)()
        Print( "2:", typename( f  )); //пусто
}
Vazio... porquê?
 

Pesquisa de ficheiros: Cadeia de pesquisa: 'A\tB A'.

Caracteres de separador em falta na frase resultante: Pesquisar por 'AB A' na pasta 'W:'.

Não afecta os resultados da pesquisa, mas pode causar confusão.



Поиск - Инструменты - Пользовательский интерфейс - Справка по MetaEditor
Поиск - Инструменты - Пользовательский интерфейс - Справка по MetaEditor
  • www.metatrader5.com
В данном окне отображаются результаты глобального поиска и поиска в файлах. Информация представляется в виде таблицы со следующими полями...
 
A100:
Vazio... porquê?
void f() {}
void f( int ) {}
 
ffxsaber:

Acrescentou novamente ambiguidade

#ifdef __cplusplus
void f() {}
void f( int ) {}
void OnStart()
{
        void *ff = &f; //Error: E2336
}
#endif
enquanto f estava sozinho, não havia ambiguidade
 
A100:

Acrescentou novamente ambiguidade.

enquanto existisse um f, não havia ambiguidade

Exactamente! Agora posso chamar f todo o tipo de funções e uma variável de uma só vez. Deve haver algum senso comum em tais ambiguidades, de modo a não causar erros aleatórios. Na minha opinião, é lógico que se dê uma volta por aí emitindo um fio vazio para dactilografar f, em vez de gerar problemas quando se apanha e define acidentalmente outro f.

 
fxsaber:

Exactamente! Agora posso chamar f todos os tipos de funções e variáveis de uma só vez.

Portanto, talvez esta possibilidade seja a fonte de erros ocultos!

#ifdef __cplusplus
void f() {}
static char f; //Error: E2238 
#endif
 
A100:

Então talvez seja essa a fonte dos bugs escondidos!

Gosto dessa possibilidade! Só tem de estar ciente do que está a fazer.

 
fxsaber:

A propósito... IsStopped() devolve um bool

void OnStart()
{
        Print( typename( IsStopped())); //bool
        Print(           IsStopped() ); //0
        Print( typename( _StopFlag  )); //int
}

Esta impressão distorce o resultado (0 em vez de falso). Em qualquer caso, a contradição não se encontra (apenas) na documentação

https://www.mql5.com/ru/forum/1111/page1980#comment_5612130