3 c c++ language-implementation
我听说过VC++中的限制(不确定哪个版本)嵌套if语句的数量(在300的大概中).代码的形式如下:
if (a) ...
else if (b) ...
else if (c) ...
...
Run Code Online (Sandbox Code Playgroud)
我很惊讶地发现这种事情是有限制的,并且限制是如此之小.我不是在寻找关于编码实践的评论以及为什么要完全避免这种事情.
以下是我认为可能有一些限制的事项列表:
还有哪些其他控制结构/语言功能有这样的限制?语言标准是否说明了这些限制(可能是实现的最低要求)?有没有人遇到特定编译器/实现的特定语言限制?
编辑:请注意,上述形式的if陈述确实是"嵌套的".它相当于:
if (a) { //...
}
else {
if (b) { //...
}
else {
if (c) { //...
}
else { //...
}
}
}
Run Code Online (Sandbox Code Playgroud)
Nik*_*nić 11
C++标准建议限制各种语言结构.以下是Visual C++编译器未实现建议限制的构造列表.第一个数字是建议的限制,第二个数字是Visual C++实现的限制:
嵌套复合语句,迭代控制结构和选择控制结构的级别[256](256).
一个宏定义中的参数[256](127).
一次宏调用中的参数[256](127).
字符串文字或宽字符串文字中的字符(连接后)[65536](65535).
单个struct-declaration-list中的嵌套类,结构或联合定义的级别[256](16).
构造函数定义中的成员初始值设定项[6144](大约600,依赖于内存,可以使用/ Zm编译器选项增加).
一个标识符的范围限定[256](127).
嵌套外部规范[1024](10).
模板声明中的模板参数[1024](64).
小智 6
语言标准是否说明了这些限制(可能是实现的最低要求)?
不,标准没有对此设置最低限制.但是,对于实现来说,设置和记录对这些事情的硬限制是一种好的做法,而不是在超过限制时以某种未知的方式失败.
编辑:标准建议一些最低限度在附录B中 - 这里发布的确太多了,无论如何都是建议:
限制可能会限制包括下面描述的数量或其他数量的数量.建议将每个数量后面的括号内的数字作为该数量的最小值.但是,这些数量仅是指导原则,不能确定合规性.