错误、漏洞、问题 - 页 2025 1...201820192020202120222023202420252026202720282029203020312032...3184 新评论 A100 2017.10.07 02:27 #20241 执行中的双重错误#define XY( X, Y ) X##Y #define f( X ) XY( g, X ) #define MACRO1( X ) #X #define MACRO2( X ) MACRO1( X ) #define SIZE 5 void OnStart() { printf( "%s", MACRO2( f( SIZE ))); }结果:f(SIZE)。应该是:G5 Andrey Khatimlianskii 2017.10.07 03:03 #20242 leonerd:如何从测试可视化图中删除箭头?我开始测试,仍然有来自上次测试的输入的箭头和线条。清理tester.tpl模板,对象可能在那里。 fxsaber 2017.10.07 09:02 #20243 A100:执行中的双重错误结果:f(SIZE)。它应该是:G5在我看来,这似乎是一个合乎逻辑的结果。 A100 2017.10.07 11:24 #20244 fxsaber: 在我看来,这似乎是一个合乎逻辑的结果。预期:首先替换内部宏SIZE,然后替换中间宏f( X ),最后替换外部宏MACRO2( X )。但即使你使用不完整的逻辑,结果也是不同的。#define MACRO1( X ) #X void OnStart() { printf( "%s", MACRO1( f( SIZE ))); } //Результат :f(SIZE) //должен быть:f( SIZE ) 至少在空间上有区别 fxsaber 2017.10.07 11:38 #20245 A100:预期:首先替换内部宏SIZE,然后替换中间宏f( X ),最后替换外部宏MACRO2( X )。但即使你使用不完整的逻辑,结果也是不同的。至少差别在空白处当然,功能的优先次序是由内到外。另一方面,对于宏来说,情况恰恰相反。 #X 是一个没有空格的字符串。当然,人们可以不同意这一点。 A100 2017.10.07 12:43 #20246 fxsaber:当然,功能的优先次序是由内而外。另一方面,Macros的情况则相反。 #X 是一个没有空格的字符串。当然,你可以不同意这一点。但是,既然已经有了简单的旧规则,有了这样的记号--为广大群众所熟知,并建立了几十年,我们为什么还要用旧的记号发明新的复杂规则呢?如果规则是新的,那么指定也应该是新的。 Alexey Navoykov 2017.10.07 15:37 #20247 A100:执行中的双重错误结果:f(SIZE)。应该是:G5 我在一年前向服务台发出了类似的请求(#1600034),现在仍然没有回应。似乎他们并不关心所有这些 "怪胎 "的错误。而一般来说,从所有人的判断来看,语言并不打算改进。只有主要的错误被修复,没有更多的错误。 fxsaber 2017.10.07 16:27 #20248 A100:既然已经有了简单的旧规则,有了这样的称呼,为什么还要发明新的、复杂的规则,而且是几十年来建立起来的,为广大群众所熟知的?如果规则是新的,指定也应该是新的。我们到底在谈论什么?应该是怎样的? A100 2017.10.07 17:43 #20249 fxsaber:我们到底在谈论什么?那么应该如何呢?#X 是字符串的原样--即带有空格(如果有的话)。而见上面 f( SIZE )->g5的例子。我没有自己发明这些规则--C++编译器就是这样做的 A100 2017.10.07 17:46 #20250 Alexey Navoykov: 一年前我向服务台发出了类似的请求(#1600034),仍然没有答复。似乎他们并不关心所有这些 "怪胎 "的错误。而一般来说,从所有人的判断来看,语言并不打算改进。他们只修复主要的错误,没有别的。我昨天无意中看到了这个,并惊讶地发现,结合template<typename T, int n> 几十行的代码简直变成了一两行(!)。这就是我写这篇文章的原因--乍一看,这可能是一件小事。我再次确信,C++中没有任何废话 1...201820192020202120222023202420252026202720282029203020312032...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
执行中的双重错误
结果:f(SIZE)。
应该是:G5
如何从测试可视化图中删除箭头?我开始测试,仍然有来自上次测试的输入的箭头和线条。
清理tester.tpl模板,对象可能在那里。
执行中的双重错误
结果:f(SIZE)。
它应该是:G5
在我看来,这似乎是一个合乎逻辑的结果。
在我看来,这似乎是一个合乎逻辑的结果。
预期:首先替换内部宏SIZE,然后替换中间宏f( X ),最后替换外部宏MACRO2( X )。
但即使你使用不完整的逻辑,结果也是不同的。
至少在空间上有区别
预期:首先替换内部宏SIZE,然后替换中间宏f( X ),最后替换外部宏MACRO2( X )。
但即使你使用不完整的逻辑,结果也是不同的。
至少差别在空白处
当然,功能的优先次序是由内到外。另一方面,对于宏来说,情况恰恰相反。
#X 是一个没有空格的字符串。当然,人们可以不同意这一点。
当然,功能的优先次序是由内而外。另一方面,Macros的情况则相反。
#X 是一个没有空格的字符串。当然,你可以不同意这一点。
但是,既然已经有了简单的旧规则,有了这样的记号--为广大群众所熟知,并建立了几十年,我们为什么还要用旧的记号发明新的复杂规则呢?如果规则是新的,那么指定也应该是新的。
执行中的双重错误
结果:f(SIZE)。
应该是:G5
既然已经有了简单的旧规则,有了这样的称呼,为什么还要发明新的、复杂的规则,而且是几十年来建立起来的,为广大群众所熟知的?如果规则是新的,指定也应该是新的。
我们到底在谈论什么?应该是怎样的?
我们到底在谈论什么?那么应该如何呢?
#X 是字符串的原样--即带有空格(如果有的话)。而见上面 f( SIZE )->g5的例子。我没有自己发明这些规则--C++编译器就是这样做的
一年前我向服务台发出了类似的请求(#1600034),仍然没有答复。似乎他们并不关心所有这些 "怪胎 "的错误。而一般来说,从所有人的判断来看,语言并不打算改进。他们只修复主要的错误,没有别的。
我昨天无意中看到了这个,并惊讶地发现,结合
几十行的代码简直变成了一两行(!)。这就是我写这篇文章的原因--乍一看,这可能是一件小事。我再次确信,C++中没有任何废话