未知的 C++ 大括号语法 [重复]
Posted
技术标签:
【中文标题】未知的 C++ 大括号语法 [重复]【英文标题】:Unknown C++ braces syntaxis [duplicate] 【发布时间】:2016-05-28 20:53:53 【问题描述】:看看这个sn-p:
void Sample_Compositor::createEffects(void)
Ogre::CompositorPtr comp3 = Ogre::CompositorManager::getSingleton().create("Motion Blur", Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME);
Ogre::CompositionTargetPass *tp = t->getOutputTargetPass();
tp->setInputMode(Ogre::CompositionTargetPass::IM_NONE);
Ogre::CompositionPass *pass = tp->createPass();
pass->setType(Ogre::CompositionPass::PT_RENDERQUAD);
pass->setMaterialName("Ogre/Compositor/MotionBlur");
pass->setInput(0, "sum");
如果这段代码是合法的,这些块是如何工作的?
【问题讨论】:
开始一个新的块作用域,
结束一个块作用域。可以开一个block来限制代码的范围。
据我所知,有一些多余的
块。
有正当理由否决这个问题吗? (缺乏还是研究?)
【参考方案1】:
它们只是引入范围并隐藏其内容的块。完全有效。
【讨论】:
没错,谢谢。【参考方案2】:如果s;
是有效语句,那么 s;
和 s;
也是如此。
添加多余的大括号是完全合法的,但完全没有意义。
有趣的问题是为什么有人以这种方式编写代码。我的猜测是作者担心局部变量何时被破坏。但几乎所有时候担心的都是错误的 - 代码的清晰度几乎胜过任何事情。
(有时需要明显多余的大括号 - 例如在 switch 语句中 - 但您显示的代码不是其中之一。)
【讨论】:
以上是关于未知的 C++ 大括号语法 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
linux 帮助 里面 [] 中括号 大括号 啥意思,语法是怎么样的啊