C de makro gibi değişken tanımlama

Başlatan hasankara, 03 Ekim 2014, 12:51:30

hasankara



paintte basitçe anlatmaya çalıştığım; iki Fa ve Fb fonksiyonları, ortak olarak Fort fonksiyonunu çağırıyorlar. Fort fonksiyonu içerisinde static bir değişken tanımlanıyor. İstiyorum ki bu tanımlanan değişkenin adresi Fa dan çağırıldığında başka ve Fb den çağırıldığında yine başka olsun.

daha önce kullanmadığım inline önyazmaçı bu iş için kullanılıyor olabilir gibi gördüm araştırmalarımda. değişken tanımlarken başına inline koyduğumda ide error gösterse de derleme işlemi yapılıyor derleyicide warning veriyor şöyle ki;
   inline static int degisken; // yazdigimda

/example-small.c:95:22: warning: variable 'degisken' declared 'inline' // derleyici uyarisi aliyorum

ide ise degisken yazısının altını kırmızı işaretliyor yani orada "unable to resolve identifier degisken" şeklinde hata yapıyorsun diyor. dediğim gibi derleyici errorsuz derliyor.

uzun lafın kısası bu istediğimi c e yaptırmak mümkün mü?

Icarus

Tabii ki kolaylıkla yapılabilir ama programlama açısından yanlış.
Onun yerine Fort nasıl davranacağını bir parametre ile karar vermeli.

hasankara

icarus teşekkürler öncelikle. fa ve fb de değişken tanımlayıp bunun adresini Fort a girip işlem yaptırmada sorun yok ama bunu otomatik yapmasını istiyorum, yani iki yerde tanımlamaktansa Fort farklı yerlerden çağırıldığını anlayıp içerisindeki değişken tanımlamasını iki kez yapması gibi. fa dan çağrıldığında hep aynı adres, fb den çağrıldığında yine fb için de hep aynı adresi Fort un değerlendirmesini istiyorum. yapabiliyor isek ufak bir örnek verebilirmisiniz en azından şunu şunu kullanmalısın gibi tüyolar da bekliyorum.

quarko

Değişkeni Fort içerisinde tanımlama. Fa ve Fb fonksiyonları değişkeni parametre olarak Fort fonksiyonuna geçsin. Fort fonksiyonuda aldığı parametreyi bahsettiğin değişken olarak kullansın. Ayrıca "inline", senin düşündüğün anlama gelmiyor. Inline ı öğrenmek istiyorsan, inline fonksiyonları araştır..
"Vicdanın ziyası ulum-u diniyedir. Aklın nuru fünun-u medeniyedir. İkisinin imtizacıyla hakikat tecelli eder."

hasankara

quarko ben de aynısından bahis ettim zaten bunu yapmakta sıkıntı olmadığını da belirttim. aslında derleyici den de benzer yapıyı kendisinin kurmasını istemiş oluyorum bir bakıma. sanki alt fonksiyonda yapmış gibi görünse de bu tanımlamayı daha üstlerde bir yerde derleyici kendisi yapacak. 2 fonksiyon için hava hoş tabi 3 fonksiyonu iç içe çağırmak için en alt fonksiyonun değişkenlerini en üst fonksiyonda belirtmek gerekiyor ki bende bu işi derleyici otomatik yapsın istiyorum.

sanırım çok şey istiyorum.

vsalma

Bir makro tanimlayip bu makro icinden cagirabilirsin Fort fonksiyonunu.  Bu makro, __FUNCTION__ ile kendisini cagiran fonksiyonun adini (fb veya fa veya ...)  parametre olarak Fort fonksiyonuna gecirir. Fort fonksiyonunu kendisine parametre olarak verilen fonksiyon ismini yorumlayacak sekilde  yazarsin.

Fort u cagiracagin her yerde bu makroyu cagirirsin. Bu sekilde olur saniyorum.