Yazarlar Sözlük Makaleler Yardım Masası Gözlük Forum İstatistik

Tüm Başlıklar XML

1.  C# dilinde kullanılan modifierslardan biridir.Genellikle pek kullanılmaz; çünkü işimize gerekli fonksiyonların tamamını kendimiz yazarız çoğu zaman.

External kelimesinin kısaltılmasından gelen bu keyword, C# dili ile implemente edilmemiş fonksiyonları kullanmamıza olanak tanır.Bu sayede farklı kaynaklaradan referans göstereceğimiz fonksiyonları kullanabiliriz.

Bu iş için öncelikle hangi DLL i kullanacaksak, onu programa dahil etmemiz gerekecektir.Her extern ile çağıracağımız fonksiyonun tanımını yapmadan önce, fonksiyonun nereden alınacağını belirlememiz ve bunu belirtmemiz gerekir(DllImport).Bu şekilde çağırılacak fonksiyonların static olması gerektiğine de dikkat edilmelidir.

Yazılımda genel olarak karşımıza çıkan black box yaklaşımının izlerini burada görebiliriz.Yazılmış bir DLL içindeki fonksiyonun nasıl yazıldığını bilmeden, onu alır kullnırız.Her ne kadar dışarıya açılan kısmını kullanabilsek bile, işimize yararlı olmasından kullanma ihtiyacı hissederiz.

Bir örnek vermek gerekecek olursak Windowsun kendiş içinde bulunan multimedia DLL dosyasını(winmm.dll) kullanarak ses ile ilgili kimi işlemler yapabiliriz.Aşağıda bunu belirten bir örnek bulunmaktadır.OpenFileDialog penceresi açılmadan bir wav dosyası çalınmaktadır.:

using System.Runtime.InteropServices;

...

private System.Windows.Forms.Button button1;
private System.Windows.Forms.OpenFileDialog openFileDialog1;

public const int SND_FILENAME = 0x00020000;
public const int SND_ASYNC = 0x0001;

...

private void button1_Click(object sender, System.EventArgs e)
{
   PlaySound("C:\\WINDOWS\\Media\\Windows XP Startup.wav",SND_ASYNC, SND_FILENAME );
   openFileDialog1.ShowDialog();
}

[DllImport("winmm.dll")]
public static extern bool PlaySound(string SoundSource, int param1, int param2 );

mennan
06 Kasım 2005 13:41 ~ 06 Kasım 2005 20:28
2.  C'de bir değişkenin başka bir modülde zaten tanımlanmış olduğunu ve o değişkenin kullanılmak istendiğini belirtmek için extern belirleyicisi kullanılır.

Biraz daha açarsak, örneğin;
modul1.c dosyasında;
int i = 3;
int main()
{
    //...
}
modul2.c dosyasında ise;
void birFonksiyon()
{
    i++;
}
kodları bulunsun.

Bu iki dosya ayrı ayrı derlenecek ve daha sonra tek bir programı oluşturmak üzere birbirine bağlanacak. Dikkat edilirse modul1 içinde tanımlanmış global i değişkeni modul2 içinde kullanılmak isteniyor. Modul2.c kaynak kodu derlenirken derleyici i'nin tanımlı olmadığını söyleyerek hata verir. Nerden bilsin modul1.c'de tanımlı olduğunu? Bu durumdan kurtulmak için extern belirleyicisi kullanılır. Modul2.c kaynak kodunun başına
extern int i;
satırı eklenerek, başka bir modülde böyle bir global değişkenin tanımlanmış olduğu ve onun kullanılmak istendiği derleyiciye belirtilir.
fizikci
05 Şubat 2006 22:52
Bu konuda bildiklerinizi bizlerle paylaşabilirsiniz
Tabi bunun için yazarsanız giriş yapmalı, yazar değilseniz yazar olmalısınız.


Bu başlığa bkz veren girişlerin başlıkları nedir?

Bu başlığa bkz veren girişler başka hangi başlıklara bkz verdiler?
© 2005, Bilişim Kulübü. (1109 ms)
Ne yapabilirsin: SubtitleClick ile İngilizceni Geliştir, Çınar Framework ile kod yaz, Eglencelik.org'ta biraz eğlen