当前位置:  开发笔记 > 编程语言 > 正文

你有没有崩溃编译器?

如何解决《你有没有崩溃编译器?》经验,为你挑选了4个好方法。

每个人(至少是使用编译语言的每个人)都遇到了编译错误,但是实际崩溃编译器的次数是多少?

我已经公平地分享了"内部编译器错误",但大多数只是通过重新编译而消失了.你有一个(最小的)代码崩溃了编译器吗?



1> Jacob Krall..:

我编写了我们使用的编译器,所以它有时会崩溃.



2> ejgottl..:

简单.

// -*- C++ -*-

template 
class Foo : public Foo
{

};

int main(int, char*[])
{
    Foo<0> x;
    return 0;
};


ejgottl@luna:~/tmp$ g++ -ftemplate-depth-1000000 -Wall foo.cpp -o foo
g++: Internal error: Segmentation fault (program cc1plus)
Please submit a full bug report.
See `` for instructions.
For Debian GNU/Linux specific bug reporting instructions, see
``.


嘿,使用C++很便宜;-) ;-)

3> ephemient..:

我还没有让GHC(一个Haskell编译器)崩溃,但是我已经把它弄错了

My brain just exploded.
I can't handle pattern bindings for existentially-quantified constructors.

它很容易解决,除非你有一些棘手的(通常是错误的)设计,否则你不会这样做,但它可能会成为有史以来最好的编译器错误消息.



4> James Curran..:

VC现在优雅地捕获它,但在90年代中期,这将崩溃Microsoft C++和Borland C++编译器:

struct MyClass
{
    MyClass operator->() { return *this; }
};


int main(int argc, char* argv[])
{
    MyClass A;
    A->x;
}

重载的operator->本质上是递归的.该函数应返回一个指针,再次应用oper->.这个片段使代码生成无限递归.

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有