错误、漏洞、问题 - 页 2009

 
fxsaber:
为什么完全没有警告,说这个变量没有被使用?

因为它已被初始化。

 
Alexey Viktorov:

因为它被初始化了。

那么,这有什么区别呢?它是用一个常数初始化的。即使是这样的代码也应该产生警告

void OnStart()
{
  int Array[];
  int i;
  
  i = Array[0];
  i = Array[1];
  i = Array[2];
}

因为变量和数组的任何地方都没有涉及。

 
fxsaber:

那么,这有什么区别呢?它是用一个常数初始化的。即使是这样的代码也应该产生警告

因为变量和数组没有参与任何地方。

我认为这样的代码一定是根本无法编译的,因为没有定义数组的大小。但这只是一个挑剔的问题。

那么,他们怎么不参加呢?一个变量被赋予一个数组单元值。这就是他们参加计算的情况。编译器怎么能知道你的未来计划?我认为按照你的想法去做可能是正确的,但非常困难。如果你试图提出这种检查的算法,你可以写如下:程序员检查一个变量是否被分配了一些值。如果没有,说明没有使用。试着给我们一个粗略的算法,以确定一个变量已被初始化,但在计算中没有用到其他地方。

同名变量的数量...是值得怀疑的。

 
Alexey Viktorov:

编译员怎么会知道你的未来计划?

编译器有时会抛出整块的内容,因为它知道

关于交易、自动交易系统和策略测试的论坛

标准功能/方法的其他实现方式

Renat Fatkhullin, 2016.09.01 23:50

为了避免编译器因循环无用而将其扔掉,你必须使用计算结果。例如,使打印变量Price。

 
fxsaber:

编译器有时会扔掉整块的内容,因为它知道

好吧,如果雷纳特还没有回答够的话,我们就等着他的回答吧。而且原则上我个人对一切都很满意。

 
如果kodobase中的工作已经更新(作者调整了代码),请将相关的讨论主题标记为未读。
 

我如何做一个#uninclude?

// Test.mqh
void Func() {};
#include <Test.mqh>

// Здесь видна Func();

#uninclude <Test.mqh>

// Здесь не видна Func();
 

纠正数值或单位

2017.09.21 11:37:27.564 Tester  EURUSD: preliminary downloading of history ticks started, it may take quite a long time
2017.09.21 11:37:32.564 Tester  EURUSD: "bases\FIBOGroup-MT5 Server\ticks\EURUSD\201708.tkc" download (836044.77 Kb/sec)
2017.09.21 11:37:41.565 Tester  EURUSD: 45% ticks downloaded (535.34 Kb/sec)
2017.09.21 11:37:49.565 Tester  EURUSD: 53% ticks downloaded (518.17 Kb/sec)
2017.09.21 11:38:01.571 Tester  EURUSD: 61% ticks downloaded (530.69 Kb/sec)
2017.09.21 11:38:12.571 Tester  EURUSD: 70% ticks downloaded (547.64 Kb/sec)
2017.09.21 11:38:26.572 Tester  EURUSD: 82% ticks downloaded (543.88 Kb/sec)
2017.09.21 11:38:38.573 Tester  EURUSD: 94% ticks downloaded (552.07 Kb/sec)
2017.09.21 11:38:50.573 Tester  EURUSD: preliminary downloading of history ticks completed, 44.41 Mb in 1:23.008 (547.80 Kb/sec)
 
fxsaber:

你如何制作#uninclude?

你不能直接这样做。代码重构(不同的文件结构或OOP)将有所帮助。

 
在CopyTicks测试器中返回零,这是否正常?