将Vim作为mql的理想工具 - 页 4

 
Vladimir Simakov:
  1. 要开发的预处理器,同样需要#if。


不就是它吗?

Документация по MQL5: Основы языка / Препроцессор / Условная компиляция (#ifdef, #ifndef, #else, #endif)
Документация по MQL5: Основы языка / Препроцессор / Условная компиляция (#ifdef, #ifndef, #else, #endif)
  • www.mql5.com
Директивы препроцессора используются компилятором для предварительной обработки исходного кода перед его компиляцией. Директива всегда начинается со знака Каждая директива описывается отдельной записью и действует до переноса строки. Нельзя в одной записи использовать несколько директив. Если запись директивы получается слишком большой, то её...
 
Alexey Viktorov:


不就是它吗?

我的伙计,我写了#if - 它不在那里。学习基本知识。
 
Vladimir Simakov:
我的伙计,我写了#if - 它不在那里。学习基本知识。

那么,请解释一下其中的区别。也许我可以学到一些东西。否则,我就会无知地死去......。

 
Alexey Viktorov:

所以要解释一下其中的区别。也许我可以学到一些东西。否则我将无知地死去......

https://en.cppreference.com/w/cpp/preprocessor
 
Vladimir Simakov:
https://en.cppreference.com/w/cpp/preprocessor

嗯,这一点都不严重。在我学会英语之前,我就已经死了。

 
Alexey Viktorov:

嗯,这一点都不严重。在我学会英语之前,我就已经死了。

不幸的是,所有最好的东西都是在那里发明的,所以如果你不懂英语,那么就是你的问题。就我个人而言,我正在学习。同样的文档在谷歌翻译的专业,非常多甚至有助于学习,因为这样的废话从这个翻译在俄罗斯,根本没有地方去。但与码头的神枪手幸运的是,像俄罗斯团队这样的开发团队有点多,))))
 
Alexey Viktorov:

嗯,这一点都不严重。在我学会英语之前,我就已经死了。

如果快速和非常快速,#if是对编译前已知条件的检查,而在MQL中只有#ifdef--对相应定义的检查,即代码

const int x = 2;
#if  x>0 #include "lib1.mqh"
#elif   #include "lib2.mqh" 
#endif

不起作用

但这并不准确!)))) - 我不喜欢宏,但有时没有宏也很难 ((((

 
Igor Makanu:

如果快速和非常快速,#if是对编译前已知条件的检查,而在MQL中只有#ifdef--对相应定义的检查,即代码

不起作用

但这并不准确!)))) - 我不喜欢宏,但有时没有宏也很难 ((((

我不太清楚最新的C++标准,但 "#if x>0 "似乎没有在任何地方实现。通常是关于 "#if defined DEBUG && defined LEVELS",至少是这样。

 

近年来,有很多关于编辑的投诉。说 "制定一个清单 "是错误的。没有人认为认真坐下来做这样一份清单有什么意义,因为他们不相信这种反应。

为了改进编辑器,你所要做的就是开始实现流行的IDE的标准功能。

简而言之,对我来说缺少什么。

代码折叠。

通过Alt-M列出完整的函数列表,即使这些函数被#ifdef/#endif包裹着。

调用一个 外部造型器。我使用clang。内置的那个根本不适合我,它只是几组固定的设置。

控制外部对开放文件的更改。

更强大的调试选项。例如,改变变量值,变量变化的断点(包括按条件)。我不希望在调试时 "退一步",这太过分了。

这一切早在毛泽东时代就已经实施了。

 
Edgar Akhmadeev:

我不太清楚最新的C++标准,但 "#if x>0 "似乎没有在任何地方实现。通常是关于 "#if defined DEBUG && defined LEVELS",至少是这样。

#define a 3
#if a<5
...
#endif
这将发挥作用。这里的全部重点是翻译阶段。当预处理器运行时,它对 constexpr 变量一无所知,因为这已经是编译时间。