Помогите, пожалуйста, новичку с написанием функции

 
Приветствую всех форумчан.
При написании функции определения нового дня я столкнулся с проблемкой: при комплияции возникает ошибка - 'DayWeek' - initialization expected 
Если не сложно, посмотрите код и объясните, в чем дело. 
Заранее спасибо!)))
extern int Day_of_Week = 1;                           // Текущий день - Понедельник

int start()
{
 if (New_Day(Day_of_Week)=1)
 Alert("Наступил новый день");
 return;
}

int New_Day(int DayWeek)                               // Ф-ия обнаружения ..
 {                                                     // .. нового дня 
  static int Data=DayWeek;                             // Текущий день недели
  int New_Day=0;                                       // Факта образования нового дня нет
  if(Data!=DayOfWeek())                                // Сравниваем дни
   {
    Data=DayOfWeek();                                  // Теперь день недели такой
    New_Day=1;                                         // Наступил новый день
   }
  return(New_Day);
 }
 
имя функции и имя переменной внутри неё - у вас одинаковое
 
sergeev >>:
имя функции и имя переменной внутри неё - у вас одинаковое

Странно, имена переменных внутри функции исправил, а ошибка возникает там же... Вот исправленный код

extern int Day_of_Week = 1;                           // Текущий день - Понедельник

int start()
{
 if (New_Day(Day_of_Week)=1)
 Alert("Наступил новый день");
 return;
}

int New_Day(int DayWeek)                               // Ф-ия обнаружения ..
 {                                                     // .. нового дня 
  static int Data=DayWeek;                             // Текущий день недели
  int N_D=0;                                       // Факта образования нового дня нет
  if(Data!=DayOfWeek())                                // Сравниваем дни
   {
    Data=DayOfWeek();                                  // Теперь день недели такой
    N_D=1;                                         // Наступил новый день
   }
  return(N_D);
 }
 
У вас ошибка в условии if. Вы используете присваивание "=", а надо - сравнение "==".
===
И кстати, имя переменной может совпадать с именем ф-ии в MQL4. Когда-то, когда начинал, это случайно выяснил...)))
 
Svinozavr >>:
У вас ошибка в условии if. Вы используете присваивание "=", а надо - сравнение "==".
===
И кстати, имя переменной может совпадать с именем ф-ии в MQL4. Когда-то, когда начинал, это случайно выяснил...)))


Спасибо большое!
Но только замеченная вами ошибка возникла бы у меня позже :-) А сейчас я борюсь с ошибкой в строке 

static int Data=DayWeek;
она находится внутри пользовательской функции.
 
sergey1302 >>:
Приветствую всех форумчан.
При написании функции определения нового дня я столкнулся с проблемкой: при комплияции возникает ошибка - 'DayWeek' - initialization expected
Если не сложно, посмотрите код и объясните, в чем дело.
Заранее спасибо!)))

Должна быть хотя-бы пустая функция инициализации

 
Вы ее сначала объявите, а потом присвойте. Т.е.
static int Data;
Data=DayWeek;
Иначе низзя. Это тип статик.
===
Только все равно - работать правильно не будет. Изначально алгоритм кривой.
 
tara >>:

Должна быть хотя-бы пустая функция инициализации

Нет.

 
Svinozavr >>:
Вы ее сначала объявите, а потом присвойте. Т.е.
Иначе низзя. Это тип статик.
===
Только все равно - работать правильно не будет. Изначально алгоритм кривой.

Спасибо!
Что ж, на ошибках учатся, а не ошибается тот, кто ничего не делает))

 
sergey1302 >>:

Спасибо большое!
Но только замеченная вами ошибка возникла бы у меня позже :-) А сейчас я борюсь с ошибкой в строке 

она находится внутри пользовательской функции.

Инициализация не верна. 

int New_Day(int DayWeek)                               // Ф-ия обнаружения ..
 {                                                     // .. нового дня 
  static int Data=DayWeek;                             // Текущий день недели
  int N_D=0;                                       // Факта образования нового дня нет
  if(Data!=DayOfWeek())                                // Сравниваем дни
   {
    Data=DayOfWeek();                                  // Теперь день недели такой
    N_D=1;                                         // Наступил новый день
   }
  return(N_D);
 }

Вы не можете инициализировать переменным значением - оно не определено на этапе компиляции. Инициализируйте константой.

2 Svinozavr      
Иначе низзя. Это тип статик.

можно, пример:

bool IsInit()
{
static bool flag = false;
    if( flag ) 
        return(true);
//
// Init Code
//
    flag = true;
    return(false);
}
внутри функции модификатор static обозначает, что переменная инициализируется один раз - при первом вызове функции.

Удачи.
 
Имелось ввиду, что инициализировать статику можно столько константой, а не так, как у автора.
Причина обращения: