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

fxsaber:

Торможу, так всегда было?

Здесь некое противоречие, поскольку

void OnStart()
{
int Num = f(); //нормально
}
int f() { return(0); }

А какая собственно принципиальная разница?

Ошибка при компиляции:
typedef void (*fn)();
void f() {}
fn g() { return f; }
oid OnStart()
{
        g()(); //Error: ')' - expression expected
}
Igor Makanu:

только с форвард-описанием  int f();

Спасибо.

A100:
Ошибка при компиляции:

раньше работало, но в начале года сломали указатели на функции, кажется в МТ4 должен еще работать Ваш код

так будет работать:

typedef void (*fn)();
void f() {}
fn g() { return f; }
void OnStart()
{
    fn func = g();
    func();
}

т.е. сейчас нужно временную переменную использовать ( теперь нельзя использовать даже массив указателей!!!! )

A100:

Здесь некое противоречие, поскольку

А какая собственно принципиальная разница?

кто то из админов давно писал как синтаксический разбор происходит, сначала статик переменные, затем глобально описанные, затем тело функций, разбор сверху вниз по тексту

... ноэтонеточно ;)

Igor Makanu:

т.е. сейчас нужно временную переменную использовать ( теперь нельзя использовать даже массив указателей!!!! )

Я для того и написал, чтобы Разработчики по возможности сделали без временной

A100:

Я для того и написал, чтобы Разработчики по возможности сделали без временной

@fxsaber писал сразу как нашли это , наверное год прошел уже, ну может Вас услышат
Igor Makanu:

т.е. сейчас нужно временную переменную использовать ( теперь нельзя использовать даже массив указателей!!!! )

Пример есть, подтверждающий что нельзя?

A100:

Пример есть, подтверждающий что нельзя?

написал пример:

typedef void (*fn)();
void f() {}
fn g() { return f; }
void OnStart()
{
//   fn ptr[10];                                                 //possible use of uninitialized variable 'ptr'
   fn ptr[10] = {0};                                             // OK
   for(int i = ArraySize(ptr) - 1; i >= 0; i--) ptr[i] = g();
   
//   for(int i = ArraySize(ptr) - 1; i >= 0; i--) ptr[i]();     //')' - expression expected
   
   for(int i = ArraySize(ptr) - 1; i >= 0; i--)                  // OK
   {
      fn func = ptr[i];
      func();
   }
}

удивился, почему то выдает предупреждение fn ptr[10];                                                 //possible use of uninitialized variable 'ptr'

осталось выяснить чем инициализировать указатели на функции


раньше можно было использовать в MQL5:  ptr[i]();
Igor Makanu:

раньше можно было использовать в MQL5:  ptr[i]();

Да... припоминаю

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

A100, 2020.07.23 02:40

Ошибка при компиляции

typedef void (*fn)();
void OnStart()
{
        fn ff[ 1 ];
        ff[ 0 ](); //Error:: ')' - expression expected
} 

а раньше (прошлогодние build) все компилировалось и работало нормально

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

A100, 2020.07.23 16:31

Извлек из старых запасов build 2085x32 - все компилируется - можете сами попробовать

Ошибка при компиляции:
class EventChartCustom {
      EventChartCustom() {}
};
bool f()
{
    return (EventChartCustom( 0, 0, 0, 0, NULL ) ? true : false); //(1) Error: 'EventChartCustom' - wrong parameters count
}
а так нормально:
bool f()
{
    if (    EventChartCustom( 0, 0, 0, 0, NULL ) ) //(2) нормально
        return (true);
    else
        return (false);
}

А какая принципиальная разница?