代码之家  ›  专栏  ›  技术社区  ›  user12345

C/C++控制结构限制?

  •  3
  • user12345  · 技术社区  · 16 年前

    if 声明(大概有300条)。该守则的形式如下:

    if (a) ...
    else if (b) ...
    else if (c) ...
    ...
    

    我很惊讶地发现了这一点

    能够 有一些限制:

    • 作用域(全局、类或命名空间)中的函数数。
    • 交换机中的案例数。
    • 函数的参数数。
    • 单个层次结构中的类数(继承或包含)。

    还有哪些控制结构/语言功能有这样的限制?语言标准是否说明了这些限制(可能是实现的最低要求)?有没有人在特定的编译器/实现中遇到过这样的特定语言限制?

    编辑: 如果

    if (a) { //...
    }
    else {
        if (b) { //...
        }
        else {
            if (c) { //...
            }
            else { //...
            }
        }
    }
    
    4 回复  |  直到 13 年前
        1
  •  11
  •   Nikola Smiljanić    16 年前

    Visual C++ Compiler Limits

    执行建议的限制。这个 第二个数字是极限 用Visual C++实现:

    • 选择控制结构[256]

    • 一个宏定义中的参数 [256] (127).

    • 一次宏调用中的参数 [256] (127).

    • 字符串中的字符 文字或宽字符串文字(在 串联)[65536](65535)。

    • 在单个 结构声明列表[256](16)。

    • 构造函数中的成员初始值设定项 定义[6144](约600, /Zm编译器选项)。

    • [256] (127).

    • 嵌套外部规范[1024] (10).

    • 声明[1024](64)。

        2
  •  6
  •   anon anon    16 年前

    语言标准说明了什么吗

    不,标准对此没有最低限制。但是,对于一个实现来说,设置并记录对这些事情的硬限制,而不是在超出限制时以某种未知的方式失败,这是一个很好的实践。

    标准 推荐 附件B中的一些最低限额——这里实在太多了,无论如何都是建议性的:

    其他的。括号内的数字如下 建议将每种数量作为 那个数量的最低限度。然而, 这些数量仅为指南 不确定合规性。

        3
  •  3
  •   CB Bailey    16 年前

    C并不是说任何包含不超过127个嵌套级别的有效程序都必须被翻译;在其他方面,它可能是不合理的大。其基本原理是设定可移植程序可能具有的某种期望水平,同时允许latitude不排除小型实现和针对小型系统的实现。

    简言之,如果您想要超过127个嵌套级别,这可能意味着您应该参考您的实现文档,看看它是否保证支持更多的嵌套级别。

        4
  •  3
  •   anon anon    16 年前

    为了把整个范围的事情放在床上,下面是合法的C++代码:

    int main() {
        if ( int x = 1 ) {
        }
        else if ( int x = 2 ) {
        }
    }
    

    The compiler cares a great deal about scope.