UnitA 引用了 UnitB,UnitB有引用了UnitA,《DDG6》第73页上说:移动其中一个单元的Uses子句到implementation部分,然后把另一个单元的uses子句放在interface部分,这样就解决了。为什么这样就可以解决单元的循环引用的问题呢?

解决方案 »

  1.   

    如果两个Uses语句都放在interface接口会引起循环引用,在D中是不允许的。
      

  2.   


    即 Uses UserA (UserB) 放到 UserB(UserA) 的 implementation 部分.
      

  3.   

    都在implementation 部分引用也没什么问题
      

  4.   

    这是一个典型的相互依赖问题,OBJECT PASCAL规定,互相依赖的单元不能同时在INTERFACE部分引用对方,至少要有一个单元在Implementation部分引用对方。否则编译器报错