C - Macro Sorusu

Başlatan baran123, 29 Haziran 2015, 23:42:09

baran123

#ifndef  x
// To do user code
#endif


Kodu ile x'in tanımlanıp tanımlanmadığını kontrol edebiliyoruz.Peki fonksiyon programın herhangi bir yerinde kullanılmış mı gibi kontroller mevcut mu ?
Mesela;
#unused  func() //sallamasyon
// To do user code
#endif

gibi :)

elektronart

Kullanılıp kullanılmadığını derleme aşamasında bilmesi çok zor. Kesin olarak kullanıldığını bilebilir ama kullanılmadığını bilemez. Derleme sırasında bu bilgiye ihtiyacın varsa işin zor, çalışma anında bu bilgiye ihtiyacın varsa global bir boolean tanımlayıp fonksiyon içinde true yaparak kontrol etmek istediğin yerde de kontrolünü yaparak istediğini elde edebilirsin.
Açık Elektronik

mufitsozen

#2
Alıntı yapılan: Baran Ekrem - 29 Haziran 2015, 23:42:09
#ifndef  x
// To do user code
#endif


Kodu ile x'in tanımlanıp tanımlanmadığını kontrol edebiliyoruz.Peki fonksiyon programın herhangi bir yerinde kullanılmış mı gibi kontroller mevcut mu ?
Mesela;
#unused  func() //sallamasyon
// To do user code
#endif

gibi :)

bu gece cok gec vakitte yapilmis sallamasyon bir soru olmus!  :D

Macrolar adi ustunde preprecessor asamasi yani compilation baslamadan sanki editorle koymus gibi kaynak program uzerine yapilan islemleri icerir. Preprecessor  fonksiyon, variable vb bilmez. (MS Word gibi birsey yani.)

Preprocessordan gectikten sonra nereden include edildigi bilinmeden sihirli bir sekilde ortaya cikan yada kaybolan bir fonksiyon kastettiysen onuda bir cok compiler'in listing fileindan gormek mumkun. Burada preprocessordan once/sonra cikan source kode gorulebilir. Fakat modern IDEler bunu zaten otomatik yapar. Yani ben tam olarak ne yapmak istedigini anliyamadim!  ???

fonksiyonun programin herhangi bir yerinde kullanilmismi dan kasit nedir? editorde "find" yapinca bulursun, yok eger benim yazdigim programin icinde cagirdigim bir fonksiyonun icinden cagrilan bir fonksiyonun icinden vs. gibi bir merakin varsa (yani bu fonksiyonu kim cagirmis/kullanmis) onu LINK asamasinda verilen XREF(cross reference) listelerinden gorebilirsin. 

Her fonksiyon hangi obj modulde tanimli ve hangi object modulden cagrilmis o tablolar sana bunu verebilir eger sen istersen (flag meselesi)
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

baran123

Evet soruyu daha tam belirleyemediğim için öyle saçma bişi oldu:).@elektronart değişken olayı da olur.


mesaj birleştirme:: 30 Haziran 2015, 00:48:36

"Preprecessor  fonksiyon, variable vb bilmez." hec bisi de bilmiyo ya :P