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

 
Ошибка на этапе компиляции
class A {
public:
        A( int  ) { a = 2; }
        A( long ) { a = 3; }
        int a;
};

#define F( f, cN )  \
template<typename T> \
cN *f( T t ) { return ( new cN( t ) ); }

F( a11, A )

а если не использовать параметрический макрос, вручную подставив параметры:

//F( a11, A )
template<typename T>
A *a11( T t ) { return ( new A( t ) ); }

void OnStart()
{
        int b = 10;
        A *a = a11( b );
        Print( a.a );
        delete( a );
}
то все нормально
 

Несказанно удивлён... МЕ напрочь не видит в инклюдниках переменные объявленные в других файлах проекта на гл.уровне (не подсвечивает и не может перейти к месту определения переменной).

И давно так?

 
joo:

Несказанно удивлён... МЕ напрочь не видит в инклюдниках переменные объявленные в других файлах проекта на гл.уровне (не подсвечивает и не может перейти к месту определения переменной).

И давно так?

В каждом "инклюднике" нужно также указать другие файлы, с которыми должна быть связь.
 
tol64:
В каждом "инклюднике" нужно также указать другие файлы, с которыми должна быть связь.

Проект чудесно компилируется, а значит, что компилятор всё видит - что где находится. А редактор МЕ - нет.

К тому же, как Вы представляете себе указывать основной исполняемый файл .mq5 в качестве инклюдника где и объявлена переменная?

 
joo:

Проект чудесно компилируется, а значит, что компилятор всё видит - что где находится. А редактор МЕ - нет.

К тому же, как Вы представляете себе указывать основной исполняемый файл .mq5 в качестве инклюдника где и объявлена переменная?

Например, вот так:

//--- Связь с основным файлом эксперта
#include "..\Main.mq5"
Или давай краткий пример, на котором не получается что-то сделать. Быстрее будет. )
 
tol64:

Например, вот так:

Или давай краткий пример, на котором не получается что-то сделать. Быстрее будет. )
\Project\

Main.mq5

input string Nevidimka="труляля";

#include "Include\Incl.mqh"

\Project\Include\

Incl.mqh

void Func()
{
  Print(Nevidimka);//Тут переменная Nevidimka не подсвечивается как должна бы подсвечиваться и нельзя перейти к месту её объявления
}
 
joo:
...

Главный файл в папке Project:

//+------------------------------------------------------------------+
//|                                                         Main.mq5 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//---
#include "Include\Incl.mqh"
//---
input string Nevidimka="труляля";
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Deinitialization function of the expert                          |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
  }
//+------------------------------------------------------------------+
//| OnTick                                                           |
//+------------------------------------------------------------------+
void OnTick()
  {
  }
//+------------------------------------------------------------------+

Подключаемый файл в директории Project\Include:

//--- Связь с основным файлом эксперта
#include "..\Main.mq5"
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Func()
  {
   Print(Nevidimka); // Теперь подсвечивается и можно перейти к месту её объявления
  }
//+------------------------------------------------------------------+
 
tol64:

Главный файл в папке Project:

Подключаемый файл в директории Project\Include:

Ну и для чего эти бессмысленные телодвижения? МЕ должен видеть (и программист)  переменные и функции именно так, как это делает компилятор.

Кроме того, то что Вы предлагаете в большинстве случаях неудобно (править инклюдники под каждый проект?).

 

Интеллисенс каждого файла работает только в своей области видимости. То есть, сканится весь файл со всеми явными включениями.

Вы же предлагаете у некого файла без связей показывать данные чужих неизвестных файлов. Что в корне неправильно.

 
joo:
Ну и для чего эти бессмысленные телодвижения? МЕ должен видеть (и программист)  переменные и функции именно так, как это делает компилятор.
Других вариантов не знаю. ) Может кто другой сможет ответить. 
Причина обращения: