[疑难] 发个帖子,活跃下气氛!
Colorful
2007-09-02
今天偶然间发现了一个有意思的问题。
我使用的编译器是Windows平台的DMD 2.003版本。 看下试验代码: import std.stdio; void main() { int[10] arrayA = [0,1,2,3,4,5,6,7,8,9]; foreach(int i; arrayA) { writefln(i); } } 编译执行上述代码,会报Stack Overflow的错误。 偶还没有发现问题所在,不知道这是不是Bug? 不知道这个会不会在D 1.0重现,哪位仁兄可以测试一下其在D 1.0的表现。 |
|
oldrev
2007-09-02
Linux DMD2 也有此问题,应该是 bug,去报告吧
|
|
oldrev
2007-09-02
DMD/GDC 1 都没这个问题
|
|
Colorful
2007-09-02
应该是新版本的更新引入的。
郁闷。 |
|
redsea
2007-09-02
我报告了比你前一号的 bug.
其实令我烦的是另外的 ld multiple definition. 我的 project 中, 有几个文件, 如果 import tango.net.Socket 的位置在 import 我的文件之后, 就会出现报告 sprint multiple definition; 好像还有更微妙的情况会发生这个bug. 但是我无法用少量代码重复其他情形. dmd 的template 实例化处理中, 必定有 bug, 但是不知道有几个. code: ------------ class C1(alias t1, alias t2) { mixin t1!(); class C2 { mixin t2!(); } } struct S1() { int i; } void main() { C1!(S1, S1) v; } ------------ dmd 1.018 & 1.020 gave same ld error message. dmd 1.018 within dsss(tango) compile result: dsss_objs/_test.o:(.gnu.linkonce.d._D4test7__T2S1Z2S16__initZ+0x0): multiple definition of `_D4test7__T2S1Z2S16__initZ' dsss_objs/_test.o:(.gnu.linkonce.d._D4test7__T2S1Z2S16__initZ+0x0): first defined here collect2: ld returned 1 exit status standalone dmd 1.020 compile result: test.o:(.gnu.linkonce.d._D4test7__T2S1Z2S16__initZ+0x0): multiple definition of `_D4test7__T2S1Z2S16__initZ' test.o:(.gnu.linkonce.d._D4test7__T2S1Z2S16__initZ+0x0): first defined here |
|
ideage
2007-09-03
1.0正常。这个帖子没有活跃了气氛,反而添加了气愤,呵呵
|
|
Colorful
2007-09-03
1.0已经比较成熟了,2.0还在Alpha阶段,出问题是正常的。
只是这个错误应该在1.0就修正了的,怎么在2.0又重现了? |
|
ideage
2007-09-03
我到目前还没有发现DMD的BUG呢,呵呵,代码也写了不少了!
|
|
redsea
2007-09-03
ideage 写道 我到目前还没有发现DMD的BUG呢,呵呵,代码也写了不少了!
那你真幸福. 今天又碰到一个 bug, 弄了半天. 结构定义 align(1) struct PacketHead { uint contentLen_; // 包的正文大小, 放到最前面, 最有希望能够知道包的大小 pktid_t id_; // 包的 id 号 PkgFlags flags_; // 标志 ushort pktType_; // 包的类型,这是应用层准备的。 } 另外一个文件的一个模板类的一个成员函数里面 int offsetIncludeContent = PacketHead.contentLen_.offsetof + PacketHead.contentLen_.sizeof; 死活无法通过编译, 说 util/pktcomm/core/SocketConnection.d(200): Error: this for contentLen_ needs to be type PacketHead not type util.pktcomm.core.SocketConnection.SocketConnection!(Test).SocketConnection 最后只有将这个变量改成类的 const 常数才编译过去. 无法弄出一个小的代码片来重复 bug. bug 还是很多的, 如果 open source 估计就能好不少. |
|
oldrev
2007-09-03
我都提交了n(n>=5)个了,有些 bug 实在是大得离谱
|