Errori, bug, domande - pagina 1099

 
Errore in fase di compilazione
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 )

e se non si usa una macro parametrica, sostituendo manualmente i parametri:

//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 );
}
allora tutto va bene
 

Indicibilmente sorpreso... ME è completamente incapace di vedere le variabili dichiarate in inlude in altri file di progetto nel livello principale (non evidenzia e non può saltare alla definizione della variabile).

Da quanto tempo è così?

 
joo:

Indicibilmente sorpreso... ME è completamente incapace di vedere le variabili dichiarate in inlude in altri file di progetto nel livello principale (non evidenzia e non può saltare alla definizione della variabile).

Da quanto tempo è così?

In ogni "inluder", dovete anche specificare altri file da collegare.
 
tol64:
In ogni "inluder", dovete anche specificare altri file da collegare.

Il progetto si compila bene, il che significa che il compilatore vede tutto - cosa c'è dove. L'editor di ME non lo fa.

Inoltre, come pensate di specificare il file .mq5 dell'eseguibile principale come un inluder dove viene dichiarata la variabile?

 
joo:

Il progetto si compila bene, il che significa che il compilatore vede tutto - cosa c'è dove. Ma l'editore di ME non lo fa.

Inoltre, come immaginate di specificare il file .mq5 eseguibile principale come un inline dove viene dichiarata la variabile?

Per esempio, così:

//--- Связь с основным файлом эксперта
#include "..\Main.mq5"
Oppure fai un breve esempio, sul quale non puoi fare qualcosa. Sarà più veloce. )
 
tol64:

Per esempio, così:

Oppure fai un breve esempio, sul quale non puoi fare qualcosa. Sarà più veloce. )
\Progetto

Principale.mq5

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

#include "Include\Incl.mqh"

\Progetto

Incluso.mqh

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

File principale nella cartella 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()
  {
  }
//+------------------------------------------------------------------+

Un file plug-in nella directory Project\Include:

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

File principale nella cartella Project:

Un file plug-in nella directory Project\Include:

Che senso ha questo gesto inutile? ME deve vedere (e programmare) variabili e funzioni esattamente come fa il compilatore.

Inoltre, quello che proponi nella maggior parte dei casi è scomodo (modificare gli inludi per ogni progetto?).

 

L'intellisense di ogni file funziona solo nel suo ambito. Cioè, l'intero file viene scansionato con tutte le sue ovvie inclusioni.

Tu proponi di mostrare i dati di qualche file senza collegamenti ad altri file sconosciuti. Questo è fondamentalmente sbagliato.

 
joo:
Allora qual è il senso di questo gesto inutile? ME deve vedere (e il programmatore) variabili e funzioni esattamente come fa il compilatore.
Non conosco altre opzioni. ) Forse qualcun altro può rispondere.