【发布时间】:2015-01-03 21:33:22
【问题描述】:
我经常听到“C++ 源代码需要大量时间和内存来编译”。
我还听说 C++ 模板是图灵完备的,所以它可能会受到 Halting problem 的影响。
我还构建了一个 C++ 项目,需要 8 GiB 的内存和 2 小时的时间。
所以,问题是:是否有可以无限编译的 C++ 代码?
(嵌套包含或嵌套模板是可检测的,因此它们不应计入。)
相关问题:Is there a C++ code that compiles with infinite memory?(我将它们分开,因为我希望得到不同的答案。)
【问题讨论】:
-
怎么会有人知道 - 但我想你可以等到它完成?
-
从理论上讲,可能可以创建一些源代码,用于通用和纯 C++ 编译器将花费无限时间进行编译。实际上并使用现代编译器?可能是不可能的。
-
根据定义,如果编译需要无限时间,那么编译不会在有限时间内完成。
-
由于 C++ 模板本身如果图灵完备,它会遭受“停止问题”(谷歌它)。那么是否有一个有效的 C++ 程序可以满足使编译器永不停止的条件呢? @EdHeal
-
您的两个问题确实是独立的问题,但它们之间有一个含义:从有限的块中分配无限的内存需要无限的时间(或者相反,如果您愿意,如果编译在有限时间内终止,看看使用了多少内存:这是编译所需的内存量)。所以你可以从一个问题开始。
标签: c++ templates compilation turing-machines