错误、漏洞、问题 - 页 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 );
}
那么一切都会好起来的
 

无可言喻的惊讶...ME完全无法看到主层其他项目 文件中的inludes所声明的变量(它没有突出显示,也无法跳到变量定义)。

这样的情况有多久了?

 
joo:

无可言喻的惊讶...ME完全无法看到主层其他项目文件中的inludes所声明的变量(它没有突出显示,也无法跳到变量定义)。

这样的情况有多长时间了?

在每个 "inluder "中,你还需要指定要链接的其他文件。
 
tol64:
在每个 "inluder "中,你还必须指定要链接的其他文件。

该项目编译得很好,这意味着编译器看到了一切--什么地方。而ME的编辑则没有。

此外,你如何设想将主可执行的.mq5文件指定为声明变量 的插入器?

 
joo:

该项目编译得很好,这意味着编译器看到了一切--什么地方。而ME的编辑则没有。

此外,你如何想象将主可执行的.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:
...

项目 文件夹中的主文件。

//+------------------------------------------------------------------+
//|                                                         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\Include 目录下的一个插件文件。

这种毫无意义的姿态有什么意义?ME必须看到(和程序员)的变量和函数与编译器完全一样。

此外,你提出的建议在大多数情况下是不方便的(为每个项目 编辑inludes?)

 

每个文件的intellisense只在自己的范围内工作。也就是说,整个文件被扫描,包括其所有明显的内含物。

你建议显示一些文件的数据,而不显示其他未知文件的链接。这从根本上说是错误的。

 
joo:
那么这种毫无意义的姿态有什么意义呢?ME必须看到(和程序员)变量和函数与编译器完全一样。
我不知道有什么其他选择。)也许其他人可以回答。