2017-04-26 94 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 –

相关问题