Ошибки, баги, вопросы - страница 1964

 
fxsaber:
...

Давно на самом деле наболело. Возможно, не одного меня раздражает.


Да, не одного Вас. )

 
fxsaber:

Просьба пояснить typeof. Поиском не нашел нормального объяснения не для опытных программеров.

Эти строки удалил (случайно попали).

У вас https://www.mql5.com/ru/forum/1111/page1983#comment_5616331 аналогичная запись такого вида

template<typename T>
void g( T Value ) { Print(typename(Value)); }
  Несущественное отличие: отсутствует Value, поскольку оно избыточно
Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 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  )); //пусто
}
Пусто... а почему?
 

Поиск в файлах: искомая строка: 'A\t\tB A'

Пропуск символов табуляции в результирующей фразе: Поиск 'AB A' в папке 'W:'

На результаты поиска не влияет, но может вызывать путаницу.



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

Вы снова добавили неоднозначность

#ifdef __cplusplus
void f() {}
void f( int ) {}
void OnStart()
{
        void *ff = &f; //Error: E2336
}
#endif
пока f была одна - неонозначности не было
 
A100:

Вы снова добавили неоднозначность

пока f была одна - неонозначности не было

Именно так! Сейчас могу обозвать f сразу много всяких функций и переменную. Должен же быть здравый смысл при таких неоднозначностях, чтобы не вызывать случайных ошибок. По-моему, логично обломать, выдав пустую строку на typename f, чем порождать проблемы, когда случайно взял и определил еще одну f.

 
fxsaber:

Именно так! Сейчас могу обозвать f сразу много всяких функций и переменную.

Так может такая возможность и есть источник скрытых ошибок?!

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

Так может такая возможность и есть источник скрытых ошибок?!

Мне такая возможность нравится! Надо только осознавать, что делаешь.

 
fxsaber:

Кстати... IsStopped() возвращает bool

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

Это Print искажает результат (0 вместо false). В любом случае противоречие не (не только) в документации

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

Причина обращения: