Компиляция — это процесс перевода исходного кода MQL4/MQL5-программы на машинный язык. Ее результатом является создание исполняемого файла программы (*EX4 или *.EX5), который может быть запущен в торговой платформе. Скомпилировать можно любой файл (*.MQ4, *.MQ5 или *.MQH), однако исполняемый файл (*.EX4 или *.EX5) может быть получен только в...
// В коде содержится ошибка, которая остановит выполнение этого советника.inputint Range = 0;
class A
{
public:
void f() {}
};
A* const a = new A;
voidOnInit() { a.f(); }
voidOnDeinit( constint ) { delete a; }
// В коде содержится ошибка, которая остановит выполнение этого советника.inputint Range = 0;
class A
{
void f() {}
public:
A()
{
static A* Tmp = &this;
Tmp.f();
}
};
voidOnInit() { A a; }
你能告诉我为什么编译器开始骂人了吗(截图附后)?
一年前一切都很好,但现在我把最新的终端,编译和这个
我在哪里可以找到这些信息 的答案?
以及如何正确解决这个警告?
更新:添加了第三张截图--无害代码上的相同信息
和第四张截图
编译器的严格程度如何,如何解决这个问题?
我遇到了这样一个奇特的情况。
如果在定义带有静态字段的类时,其对象被立即创建,将会出现编译错误。
在上一个版本中,编译器并没有抱怨类中没有类型的变量。但EA在启动时崩溃了
我偶然发现了一个 "功能"...我花了一个多小时把指标从4翻译成5。我想不出错误在哪里,因为代码似乎是跨平台的。最后,它在这里,一个不显眼的地方。由于某种原因,他们把两个参数换了。![](https://c.mql5.com/3/298/image__84.png)
改善?
有更多这样的情况吗?
字符串串联
可能还有更多,我也想知道这些功能的完整列表
---
可能值得在标准库中 搜索#endif
但战斗中的议员遇到了一个情况,那就是议员停止了工作。设法弄清了原因。一个很酷的细微差别,这几乎是不可能注意到的。
你可以通过尝试在这段代码中看到问题,来真正体会到它。
但战斗中的议员遇到了一个情况,那就是议员停止了工作。设法弄清了原因。一个很酷的细微差别,这几乎是不可能注意到的。
你可以通过尝试在这段代码中看到问题,来真正感受到它。
其中一个主要规则是,你在哪个层次上构建一个对象,就需要在同一个层次上将其销毁。没有更高或更低。
谢谢你,好的规则。成为我自己无能的受害者。真的,对于这样一个比较明显的案例,需要一些更多的规则。
也许对于这两种情况来说,警告是聪明的做法?
但战斗中的议员遇到了一个情况,那就是议员停止了工作。设法弄清了原因。一个很酷的细微差别,这几乎是不可能注意到的。
你可以通过尝试在这段代码中看到问题,来真正体会到它。