错误、漏洞、问题 - 页 2417

 
Alexey Navoykov:

我知道它不能编译。 我说的是语法检查(在ME中也叫 "编译"),因为我甚至在以前的帖子中用括号指明了它。 如果你在C++编译器中也运行语法检查(通常通过命令行),它就会像个宝贝一样发誓。

你看,如果你不指定。

B b;

C++可以完美地编译这段代码。所以语法是正确的。问题从对象创建 层开始,因为那是类对象将被分配的地方。

试想一下,你永远不会检查一个模板,看它是否可以用在页眉上。在这种情况下,编译器应该怎么做?假设你需要为一个结构实现std:lower,而*.h中没有实现。编译器在检查阶段也不应该抱怨。

你能说明你是如何从命令行中检查*.h的语法来检查这段代码的吗?它变得很有趣)

 
Andrey Pogoreltsev:

你看,如果你不指定。

C++可以完美地编译这段代码。那么语法是正确的。

有趣的逻辑 ) 而如果你把所有的代码都完全删除,那么语法就更加正确了?)我引用了一个具体的代码。 我并没有说B类特别不正确。 它很可能被用来调用静态方法,等等。

试想一下,一个你不会检查的模板在标题中使用。在这种情况下,编译器应该怎么做?

没有必要用概念来替代。 模板只有在用具体类型展开时才会被检查,这是可以理解的。

你能说明你是如何从命令行中检查*.h的语法来检查这段代码的吗?它变得有趣了)

我不能在这里给出任何提示,因为我没有费心去做这样的手鼓,而是为VS写了一个宏,用来编译头文件。 为了这个目的,它把当前的文档模式飞快地切换到cpp,编译它,然后返回。 简单而有品位。

我不明白为什么在studio中根本就没有正常的选项来检查头的语法。我使用的是一个相当老的版本,也许已经有了。

 
Alexey Navoykov:

我不明白为什么在studio中根本就没有正常的选项来检查头的语法。

Ctrl+F7 ,这个组合可能至少从2008年开始就有了--编译一个单独的文件
 
TheXpert:
Ctrl+F7,这个组合可能至少从Studio 2008开始就存在了--编译一个单独的文件
我说的是头文件,而这个组合指的是cpp。至少,在我2010年的工作室里是这样。
 

我在发帖前犹豫了很久,仔细检查了自己的构建,但测试器还是有问题......。

测试实际上是在开始时就停止了。

在不改变任何东西的情况下,我第二次按 "开始",就到了结尾(在它中断的地方有一个小的停顿)。

又做了几个办法--结果是严格交替的(一个接一个,偶数/多数)。直到 "悬崖 "处,平衡图是相似的。 同样,我没有改变任何东西,只是点击 "开始"。

这很可能是它增加一个角色的地方(为什么不是自测试开始以来的所有5个?)


抛开实际的内存可用性问题(根据任务管理器,1.2-1.4GB可用,即与报告相符),不可能是同一个测试需要不同的内存量来运行?如果报告说400Mb足够了,你可以在1.2Gb上运行三个这样的测试...

补充数据:对5个符号进行测试,按条形图开盘,2004年上半年...今天。本体有7个500个元素的双数组和一个小的数组结构(为每个符号存储数据,即在本例中为5 x 13),大小在初始化时设置,不再改变,也就是说,没有什么可以消耗内存。代码是程序化的,简单的,小的,没有递归和包含库。

它对四个符号起作用,但对6-7-8的效果与对5个符号的效果相同--只是一次。在同一时间,在添加一个新的字符后的第一次 - 总是工作,下一次 - 没有,然后它再次工作,等等。

有一种怀疑是内存没有被及时释放,只是出现了与缺乏内存有关的错误。

共有3个问题。

  • 如果设置或代码没有变化, 测试只运行一次(严格)。
  • 有足够的空闲内存进行几次测试(如果成功通过测试后的信息可以相信的话),但出现内存不足的错误(即使尝试)。("成功 "时使用了400个,错误发生时有1200个空闲)
  • 如果有历史记录,一些字符在测试过程中被连接起来(你可以在同步日志上看到)。在所有符号的每个新条形上发出轮询信号(循环中)。

 
Alexey Navoykov:
它是关于标题的,而这个组合指的是cpp。至少在我的2010年工作室是这样。
是的(而且你的方法似乎比为头文件制作一个空的cpp更方便。
 

为什么会被禁止呢?

void fn(const int&) {}

void start() {
   fn(5);  // parameter passed as reference, variable expected

}
 
Vict:

为什么会被禁止呢?

为什么--我不知道,你必须问开发团队。
 
TheXpert:
这是自古以来的传统。只按值计算的字词。为什么--我不知道,你必须问开发者。

通过引用传递参数 意味着有一个变量分布在内存中。

常量不存储在任何地方,而是直接使用。

 
TheXpert:
我不知道为什么,我得问问开发者。

为了取悦受虐狂。我对标准的bilio没有印象,所以我决定写一个类似的矢量,但由于有大量的 "技巧",它变成了另一个不发达的地方。

void push_back(const T &value);