2017-04-26 48 views

回答

4

有一個機制,但它是不容易達到此目的。你可以做的是創建一個subsystem_pkg,導入top_pkg。然後你就可以export全部來自top_pkg導入的符號,使他們看起來好像他們內部subsystem_pkg通常直接宣佈,只有一個包內聲明的那些符號可用於導入什麼,而不是什麼包已經進口的(有時稱爲的鏈接進口)。 export命令鏈接導入。

是什麼讓這個困難這個目的是通配符適用於進口和出口的方式。你想鏈接的每個符號都必須顯式出現在鏈接包中。例如

package top_pkg; 
    int a,b,c,d; 
endpackage 
package subsystem; 
    import top_pkg::*; 
    import top_pkg::b; 
    export top_pkg::*; 
    export top_pkg::c; 
    int e = d; 
endpackage 

第一import聲明說,使top_pkg所有符號候選人的進口;它並不實際導入任何東西。第二條進口聲明明確導入b。第一條export聲明表示導出從top_pkg導入的任何符號,此時符號僅爲b。第二個export語句隱式導入,然後明確導出c。最後一條語句會導致隱含導入d以及隱式導出'd'。

所以當你導入subsystem_pkg時,你可以從top_pkg得到符號b,c和d以及本地聲明的e。

+0

謝謝戴夫。我決定使用一個獨立的包文件,其中包含我需要的文件 – noobuntu

+1

只要沒有人導入這兩個包,並且兩個包之間沒有通信,就可以工作。請參閱http://go.mentor.com/package-import-versus-include –