【问题标题】:Does out commented code consume memory注释掉的代码是否消耗内存
【发布时间】:2013-05-04 21:14:10
【问题描述】:

我有一个关于注释掉的代码的问题,但找不到好的答案。

编译器是读出注释代码,还是立即跳过该代码?

【问题讨论】:

    标签: c# visual-studio comments


    【解决方案1】:

    这取决于语言..在C++中,例如cmet被预处理器处理和丢弃,编译器甚至看不到它们。

    一般来说,cmets 不会在目标可执行文件中“消耗内存”。词法分析器可能会也可能不会立即丢弃它们,因此它们甚至不会进入编译器的解析阶段,但它们不会进入编译的后期阶段。

    编辑:我看到 C# 和 visual-studio 标签太晚了......

    • csc:来自 sscli 源的 IIRC,词法分析器直接跳过 cmets
    • visual studio (intellisense) 它不会立即跳过它们:它需要处理 cmets 以进行着色、区域等。

    【讨论】:

      【解决方案2】:

      编译器(像大多数编译器一样)会立即跳到第一个未注释的代码行。 一个值得注意的例外是 xml comments,如果编译器在某些设置下运行,则用于文档。

      【讨论】:

        【解决方案3】:

        不,如果您谈论像///**/ 这样的普通cmets,它不会占用任何空间,因为它们没有任何要处理的源代码。
        您不会在已编译的程序中找到任何 cmets。你有没有试过在类似的评论中使用syntax-error

        // object o = NEW object();
        

        如果编译器关心这一点,它会报告错误,但不会!

        reference在这里。

        编辑

        不过有一个例外。如果您想将 cmets 转换为 XML 文件,编译器有一个 /doc-Option。见here

        【讨论】:

        • 编译器也关心字符串,即使你可以在其中嵌入语法错误。
        • 字符串是文字,编译器不会解释。
        【解决方案4】:

        预处理器,即在实际编译之前,多余的 whitesace 和 cmets 被删除。因此您不必担心代码的大小。 此外,您不必担心变量的长名称,因为它们将被赋予内部名称。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-11-08
          • 1970-01-01
          • 2011-08-07
          • 1970-01-01
          • 2017-02-28
          • 2012-02-02
          • 2016-04-25
          • 2012-02-24
          相关资源
          最近更新 更多