Вопрос по структурам

 
   struct GeneralSettings
     {
      uchar             TypeSignal;
     };

   GeneralSettings GenS;
   GenS.TypeSignal=2;

Почему подобный код не позволяет использовать в подключаемом файле (.mqh)? Выкидывает ошибку:

'GenS' - declaration without type

 

1. Дайте сюда Ваш mqh-файл

2. Покажите исходник с подключением этого самого mqh-файла

 

2. Покажите исходник с подключением этого самого mqh-файла


Зачем нужен исходник с подключением если сам подключаемый файл не компилируется?

Файлы:
Hole.mqh  2 kb
 

Текст ошибки неверный.

Нельзя на глобальном уровне писать выражения. Только инициализацию. В Вашем случае должно быть так

GeneralSettings GenS={2);
Компилятор ожидал инициализацию, поэтому и сказал про отсутсвие типа у инициализируемой переменной
 

Спасибо за помощь.

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

Есть ли какая ссылка, где об этом можно почитать?

 

Кроме того я не понимаю как работать со структурой на глобальном уровне.

Допустим я с помощью конструктора инициализировал переменную, но как её потом изменить?

Файлы:
Hole.mqh  2 kb
 
Francuz:

Спасибо за помощь.

Есть ли какая ссылка, где об этом можно почитать?

https://www.mql5.com/ru/docs/basis
Документация по MQL5: Основы языка
Документация по MQL5: Основы языка
  • www.mql5.com
Язык MetaQuotes Language 5 (MQL5) является объектно-ориентированным языком программирования высокого уровня и предназначен для написания автоматических торговых стратегий, пользовательских технических индикаторов для анализа разнообразных финансовых рынков. Он позволяет не только писать разнообразные экспертные системы, предназначенные для...
 

Включаемый файл "Hole.mqh":

//+------------------------------------------------------------------+
//|                                                         Hole.mqh |
//|                                                          Francuz |
//|                                           Francuz2000@rambler.ru |
//+------------------------------------------------------------------+
#property copyright "Francuz"
#property link      "Francuz2000@rambler.ru"
//+------------------------------------------------------------------+
//| Структура основных настроек                                      |
//+------------------------------------------------------------------+
struct GeneralSettings
  {
   uchar             TypeSignal;    // Тип робота (сигнала) от 1 до 20
  };
//+------------------------------------------------------------------+

размещаете в стандартном каталоге (обычно это каталог_терминала\MQL5\Include).


Создаёте проверочный скрипт в котором производите ПОДКЛЮЧЕНИЕ включаемого файла, ОБЪЯВЛЕНИЕ объекта GenS структуры GeneralSettings и присвоение полю структуры определённого значения:

//+------------------------------------------------------------------+
//|                                                     TestHole.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#include <Hole.mqh> // Угловые скобки обозначают, что файл Hole.mqh будет взят из стандартного каталога (обычно это каталог_терминала\MQL5\Include)
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   GeneralSettings GenS;
   GenS.TypeSignal=2;
  }
//+------------------------------------------------------------------+

ds

 

Прежде чем задавать свой вопрос, я это всё прочитал дважды. И там нигде не упоминается, что:

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

@Vladimir Karputov

спасибо за помощь. Я уже уяснил свой косяк. вся мудрость заключается в одном предложении:

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

Только в документации об этом нет упоминания.

 
Francuz:

Прежде чем задавать свой вопрос, я это всё прочитал дважды. И там нигде не упоминается, что:

@Vladimir Karputov

спасибо за помощь. Я уже уяснил свой косяк. вся мудрость заключается в одном предложении:

Только в документации об этом нет упоминания.


В документации не может быть всего: что-то познаётся на интуитивном уровне и запоминается как "Отче Наш", что-то приходит с опытом из других языков.

 
Francuz:
struct GeneralSettings
 {
  uchar             TypeSignal;
  
  GeneralSettings() {}
  GeneralSettings( const uchar Value ) : TypeSignal(Value) {} 
 };

GeneralSettings GenS(2);
Причина обращения: