模板参数=void*的编译器错误 - 页 8

 
A100:

如果我说得不对--请纠正我--我已经简单明了地说明了我的概念,在需要对括号提出警告的地方

不正确。使用括号可以减少出错的可能性。

警告是一个信息,相对来说,很多编码员在这样写的时候会犯错误:结果不是他们想要的。这适用于所有警告,而不仅仅是括号。

 
fxsaber:

错了。使用括号可以减少出错的机会

警告是一个信息,相对来说,很多编码员在以这种方式写作时都会犯错:结果不是他们所想的。这适用于所有警告,而不仅仅是括号。

这不是一个概念,而是一个一般的推理。

这个问题具有实用性,不是抽象的,而是非常具体的:你在哪里需要括号?到处都是?还是有选择地?那么谁来决定选择呢?fxsaber? 你能毫不含糊地提出来吗?因此,这一概念可以在编译器中实现

我的措辞 是:"只有在不能不做的地方"。

 
pavlick_:

ZS: 但如果我这样做,我会让它尽可能地与标准加库相似(名称、行为等),所以对我来说没有选择。既然一切都已经写好了,为什么还要再建一个规范?

如果我这样做了,对象和指针数组在mql中根本就不需要。动态列表和每个列表的循环允许以最紧凑和方便的方式解决交易中99%的任务。你甚至不需要一个单独的列表类。所有这些额外的功能都是在比我们这里通常的规模更大的情况下需要的......

 
A100: 你能毫不含糊地表达出来吗?

在这里,它们使人更容易理解代码

 
TheXpert:

在这里,它们使人更容易理解代码

这样,这个概念就可以在编译器中实现。没有人禁止不必要的括号。问题是关于不必要的警告

 
A100:

这个问题是一个实际的问题,不是一个抽象的问题,而是一个具体的问题:哪里需要托架?到处都是?还是有选择地?那么谁来决定选择呢?fxsaber? 你能毫不含糊地表达出来吗?

问题是,如果MT4编译器是正确的

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

新版MetaTrader 5构建1930平台:MQL5中的浮动图表窗口和.Net库

fxsaber, 2018.12.11 19:44

#property strict
   // from MT5: Canvas.mqh
   uint Pixel = (r<<16|g<<8|b<<0|255<<24) &0xffffffff; //check operator precedence for possible error; use parentheses to clarify precedence


在这种情况下是对的。这里不需要括号,但最好是有括号,因为很可能会有错误。正是基于这样的概率,编译器才会发出任何形式的警告。它们被发明出来是有原因的。

 
fxsaber:

在这种情况下,他是对的。

在这个阶段不需要具体的例子(你可以随意举出很多)。我们需要的是一个可以在编译器中实现的单一 概念(如果缺少括号,应该发出警告)。

 
A100:

在这个阶段,你不需要具体的例子(你可以随心所欲地举出很多例子)。我们需要的是一个可以在编译器中实现的概念

它已经实现得相当好了。只是,MT4原来更聪明。

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

新版MetaTrader 5 build 1930:MQL5中的浮动图表窗口和.Net库

fxsaber, 2018.12.11 20:22

这些根本就不是多余的信息。总有一些优先事项。

bool a = r && g || b; // check operator precedence for possible error; use parentheses to clarify precedence

编译器也已经警告五可能出现的错误。

 
fxsaber:

它已经实现得相当好了。只是,MT4原来更聪明。

提出这个警告只是因为MQL5有不同的优先级。不是因为......

即,概念:"在那些以前MQL4不同的地方,可能需要警告"。因此,开发商修复了他们以前的错误。仅此而已

 
如果编译器提供自动 "正确 "排列括号,类似于Excel在你写一个不完整的公式时的做法,那会更方便。