C++ if中奇怪的无副作用语句的含义

C++ if中奇怪的无副作用语句的含义,c++,if-statement,language-agnostic,noop,C++,If Statement,Language Agnostic,Noop,我在浏览一个项目时发现: if(!StaticAnimatedEntities) int esko = esko = 2; (这里的staticanimatedenties类型是一个纯无符号的缩写。) 这让我觉得很奇怪,所以我把这个项目搜索成了esko,并找到了其他类似的ifs,里面除了那一行之外什么都没有,f.ex。这: if(ItemIDMap.find(ID) != ItemIDMap.end()) int esko = esko = 2; (请注意,除了那些ifs之外,没有其

我在浏览一个项目时发现:

if(!StaticAnimatedEntities)
  int esko = esko = 2;
(这里的
staticanimatedenties
类型是一个纯无符号的缩写。)

这让我觉得很奇怪,所以我把这个项目搜索成了
esko
,并找到了其他类似的
if
s,里面除了那一行之外什么都没有,f.ex。这:

if(ItemIDMap.find(ID) != ItemIDMap.end())
  int esko = esko = 2;
(请注意,除了那些
if
s之外,没有其他名为
esko
的变量。)


这段神秘代码的含义是什么?

您有时可以看到这样的代码,只是为了在交互式调试器中作为一个锚定位置放置断点,以便捕获一些“不寻常”(通常是错误的)情况

调试器提供的条件断点通常非常慢和/或原始,因此人们通常故意提前计划并提供此类条件分支,以便为断点创建编译位置。这样一个编译的条件断点不会像调试器提供的条件断点那样降低程序的执行速度

在许多情况下,这样的代码被
#ifndef NDEBUG/#endif
包围,以防止它进入生产版本。在其他情况下,人们只是让它不受保护,相信优化编译器无论如何都会删除它

为了使其正常工作,
if
下的代码应该在调试版本中生成一些机器代码。否则,就不可能在其上设置断点。在这方面,不同的人有不同的偏好,但代码几乎总是看起来怪异而毫无意义


正是这些代码的无意义为程序员提供了编写任何他们想要的东西的完全自由。我要说的是,它经常成为每个程序员签名风格的一部分,某种程度上是指纹。这个家伙确实
int-esko=esko=2显然。

对于它的价值,我确信它是一个完全的NOP(除非<代码> STATACAIMANIOND实体< /C>是一个过载的类<代码>操作符!< /COD>)可能只是复制和粘贴垃圾。一个问题同时是C++和语言无关的?米迦勒我在C++代码中找到了这个,但是同样的结构也可以用在其他语言中。我想你一定是对的。Esko在芬兰语中是一个正式的男性名字。可能是程序员。