这个是不是GDC的bug呢?
tomqyp
2007-10-04
// test.d void main() { switch(1) { case 0: static int a = 0; case 1: static int a = 1; } } dmd 通过编译 gdc会报 C:\DOCUME~1\TOMQYP\LOCALS~1\Temp/ccOKaaaa.s: Assembler messages: C:\DOCUME~1\TOMQYP\LOCALS~1\Temp/ccOKaaaa.s:10: Error: symbol `__D4test4mainFZv1ai' is already defined 这里的这个ccOKaaaa.s不是源文件,是编译器用到的一个临时文件 |
|
redsea
2007-10-04
这样看, 两个都有 bug.
switch 里面是单一的作用域, 不能重复定义变量, dmd 没有考虑到这点. gdc 使用 dmd 的前端, 没有能够在编译前期发现这点, 但是它的后端和dmd 不一样, 发现了这个问题, 只是错误报告让人难以确定原始错误. 去 puremagic 报告错误吧 tomqyp 写道 // test.d void main() { switch(1) { case 0: static int a = 0; case 1: static int a = 1; } } |
|
oldrev
2007-10-04
D与C/C++一样,case是贯穿的,在 C++ 中这也不合法
|
|
Colorful
2007-10-04
要么break,要么贯穿。
|
|
tomqyp
2007-10-04
break打漏了,有break也一样
这么说的话,主要原因在于dmd了吧. |
|
oldrev
2007-10-04
大bug,不知怎么地,WB 放新版本的速度越来越慢了
|