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

 
fxsaber:

开发人员。例如,与OrderSend一样。

下面是一个例子https://www.mql5.com/ru/forum/295485/page11#comment_9959761

我以为他们会厌倦回答同样的问题,最终发出警告--不,他们没有。

因此,MQL不是为交易者准备的,而是为程序员准备的。

Баг компилятора при параметре шаблона = void*
Баг компилятора при параметре шаблона = void*
  • 2018.12.20
  • www.mql5.com
Ошибка компилятора. Билд 1961, 64 бит...
 
A100:

禁用基于数字的警告就足够了(通过MetaEditor你看不到它们,但它们确实存在),我是通过编译器命令做到的

你能告诉我如何做到这一点吗?
 
Alexey Navoykov:
你能告诉我这是如何做到的吗?

编译结果被输出到一个文件中,并从那里提取出没有预先定义警告编号的行(在警告一词后面有一个数字)。

 
A100:

编译的结果被输出到一个文件中,从那里提取出没有任何预先定义的警告号码的行(警告字样后面是一个数字)。

那么我怎样才能使这些警告不出现在ME中呢? 我应该把这些数字放在哪里?
 
Alexey Navoykov:
那么我怎样才能使这些警告不出现在ME中呢? 我应该把这些数字放在哪里?

我在命令行上编译,所有的信息也都在命令行上显示。它不能附在MetaEditor IDE上。这是最后的,可以说是编译--检查重要的警告。我甚至不再看IDE中的警告--有太多的警告了。

 
A100:

因此,MQL不是为交易者准备的,而是为程序员准备的。

我不是一个程序员,我使用MQL。完成那个关于程序员的咒语。我认为我对MQL的掌握比普通用户,也许是自由职业者要好。

所以我可以合理地说,我理解大多数语言使用者所面临的问题。

 
A100:

我在命令行上进行编译,所有的信息也都在命令行上输出。它不能附在MetaEditor IDE上。这是最后的编译 - 检查重要的警告

嗯,这并不有趣...顺便说一下,你为什么要在命令行上进行编译?
 
Alexey Navoykov:
啊,这并不有趣...顺便说一下,为什么你要在命令行上编译?

假设一个新的版本出来了,并且/或者我需要重新编译所有文件,或者只编译某些文件--我设置一个列表,只编译这个列表/几个列表

或者我需要在另一个构建中重新编译--我设置了构建号和列表,命令文件自己就能完成。

 
A100:

而且,如果你在8个字节中只得到4个字节,这样的值有什么意义呢?鉴于开发者明确禁止将指针的值转换为ulong(在你可以这样做之前,相信我当时的高位是非零的)。

实验表明,这个数字的行为与指针数组中的指针索引的行为完全一致,如果这样的数组严格连续地将数字分配给指针,并且如果一个数字范围被释放,则从最后释放的数字到第一个数字以相反的顺序重新使用它们。如果有人想在他们的架构中复制这个描述符系统,例如用大小为int的结构代替指针类型,可以理解的行为(对于被破坏的对象,返回true作为内联类型,而这种行为禁止用指针重载一些有用的逻辑运算符,这完全是打脸)和简单类型的所有好处,同时通过计数器保持对对象和指针人口的严格控制,从对象本身获得这个数字的能力将节省大量的pa

说到更平凡的任务--这个数字表示系统中创建的对象的数量,对于任何基于动态列表的架构的调试都很有用。毫不奇怪,我不是第一个想出如何 "骗取 "禁令的人,甚至有人告诉我一个更快的方法,虽然只适用于4。
 
A100:

例如,一个新的版本出来了,并且/或者我需要重新编译所有的或只有某些文件

我明白了,但这是一个特殊情况。毕竟,我们大部分时间是在IDE中编码和编译的,所以在那里禁用不必要的警告会非常方便。

我个人发现那里有很多不必要的东西。例如,有关于隐式转换为字符串的警告。我想不起来在什么情况下它会引起一些不愉快的后果。99%的情况下,字符串只用于在屏幕上打印文本或将其写入文件。

或者,假设,当函数的返回值的类型是bool,而你返回0或1,编译器也会抱怨,说这个类型不是bool。 VS没有这个功能。这些常数对bool来说是允许的。例如,我更方便写return 0 而不是return false,因为它更容易被视觉感知。

因此,我的日志几乎完全被这两个警告所占据。我想摆脱它们)。

当我有时间的时候,也许我会自己完成它。 我有很多想法。 现在我只是在完成编译后自动滚动日志到第一个错误(如果有的话)的开头。 没有它,我不得不手动滚动列表(它相当大),寻找错误信息。真让人头疼。