circular reference *
-
donup dolasip ayni yere gelmek gibi... escher in uc uca eklenmis kertenkeleleri gibi... kendi kuyrugunun pesinden kosan kedi gibi... oraya buraya bakiniz vermek gibi...
(bkz: recursion) -
programlama dillerinde iki ayri modulun birbirlerine bagimli olmasi halinde ortaya cikan bir hatadir. ucsd tarafindan pascal tarafinda modullerin interface ve implementation parcalarina ayrilmasi suretiyle kismen etrafindan dolanabilmek mumkun kilinmi$tir.
misal c'de yumurta.h icinde:
#include "tavuk.h"
tavuk.h icinde de
#include "yumurta.h"
hah bitti i$te oldu gitti zavalli.
oysa ki pascal:
unit yumurta;
interface
uses tavuk;
end.
unit tavuk;
implementation
uses yumurta;
end.
gibi bir yapiya izin verir. boylece son derece kotu kod mimarileri in$a edebilir hale gelirsiniz. olsun adi ustunde rad. -
c'de ustesinden gelmek icin #ifndef ve #define lar kullanilir.
netekim:
yumurta.h:
#ifndef yumurta_h
#define yumurta_h
#include "tavuk.h"
...
#endif
tavuk.h:
#ifndef tavuk_h
#define tavuk_h
#include "yumurta.h"
...
#endif -
circular dependency olarak da bilinir.
wikipedia'daki açıklaması (ingilizce):
http://en.wikipedia.org/wiki/circular_dependency -
budur (bkz: circular reference/@cornavin)
-
-
include guards, circular dependencies sorunlarını çözmek için değil, multiple inclusions önlemek amacıyla kullanılır; bu oldukça farklı bir amaçtır.
şurada biri zaten anlatmış:
include guards
ekşi sözlük kullanıcılarıyla mesajlaşmak ve yazdıkları entry'leri
takip etmek için giriş yapmalısın.
hesabın var mı? giriş yap