2011-12-29 119 views
6

ma.d爲什麼模塊衝突?

module ma; 

struct A{ } 

mb.d

module mb; 
import ma : A; 

struct B{ } 

main.d

import ma; 
import mb; 

void main(){ 

    A a; 
} 

當編譯:

main.d(6): Error: ma.A at ma.d(3) conflicts with mb.A at mb.d(2)

mb.dA不是一個公共導入,爲什麼這個錯誤?

奇怪的是,下面的代碼編譯:

main.d

import mb; 

void main(){ 

    A a; 
} 

那麼,這又是一個DMD錯誤,或者有我誤解進口和公衆的進口是如何工作的?

回答

5
+1

難以置信! – Arlen 2011-12-29 23:14:40

+1

@Arlen現在,dmd中的錯誤正在以一種快速的速度得到修復(如[changelog](http://d-programming-language.org/changelog.html)所示),但仍有許多令人煩惱的錯誤留在裏面。情況比以前好很多,但如果您在此期待一個無缺陷的編譯器,您很可能會失望。它雖然到達那裏。 – 2011-12-30 10:54:54

+1

沃爾特[剛剛合併](https://github.com/D-Programming-Language/dmd/pull/190)此問題的修復。 – eco 2011-12-30 19:41:28