C ++ 'da Satır İçi ve Makro Arasındaki Fark
İçerik
Makro, çağrıldığı zaman genişleyen bir talimattır. İşlevler ayrıca makrolar gibi tanımlanabilir. Benzer şekilde, satır içi işlevleri de çağrılma noktasında genişler. Satır içi ve makro işlev arasındaki bir temel fark şudur: satır içi işlevler sırasında genişletilir derleme, ve makrolar Program tarafından işlendiğinde genişletilir. önişlemci.
Karşılaştırma tablosu yardımı ile satır içi ve makro arasındaki farkı inceleyelim.
- Karşılaştırma Tablosu
- Tanım
- Anahtar Farklılıklar
- Sonuç
Karşılaştırma Tablosu
Karşılaştırma için temel | Çizgide | Makro |
---|---|---|
Temel | Satır içi işlevler derleyici tarafından ayrıştırılır. | Makrolar önişlemci tarafından genişletilir. |
Sözdizimi | satır içi return_type funct_name (parametreler) {. . . } | #define macro_name char_sequence |
Kullanılan Anahtar Kelimeler | Çizgide | #tanımlamak |
Tanımlı | Sınıfın içinde veya dışında tanımlanabilir. | Programın başında her zaman tanımlanır. |
Değerlendirme | Argümanı yalnızca bir kez değerlendirir. | Argümanı kodda her kullanıldığında değerlendirir. |
Genişleme | Derleyici tüm işlevleri satır içi değil ve genişletmeyebilir. | Makrolar her zaman genişletilir. |
Otomasyon | Sınıf içinde tanımlanan kısa fonksiyonlar otomatik olarak satır içi fonksiyonlara yapılır. | Makrolar özel olarak tanımlanmalıdır. |
erişme | Bir satır içi üye işlevi, sınıfın veri üyelerine erişebilir. | Makrolar asla sınıfın üyesi olamazlar ve sınıfın veri üyelerine erişemezler. |
Sonlandırma | Satır içi işlevinin tanımı, satır içi işlevinin sonundaki küme parantezleriyle sona erer. | Makro tanımı yeni satırla sonlanır. |
Hata ayıklama | Hata ayıklama, satır içi bir işlev için derleme sırasında hata denetimi yapıldığı için kolaydır. | Derleme sırasında hata denetimi olmadığından hata ayıklama makrolar için zorlaşır. |
bağlayıcı | Bir satır içi işlev, işlev gövdesindeki tüm ifadeleri işlevin gövdesiyle başlar ve küme parantezleriyle biter. | Bir makro, sonlandırma sembolü bulunmadığından, birden fazla ifadeye sahipse ciltleme sorunuyla karşı karşıya kalır. |
Inline'un tanımı
Satır içi bir işlev normal bir işleve benziyor ancak daha önce “Çizgide“. Satır içi işlevler, çağrılma yerine genişletilen kısa uzunluklu işlevlerdir. Örnek olarak satır içi işlevleri anlayalım.
#Dahil etmek Yukarıdaki programda, “example” sınıfındaki satır içi bir işlev olarak initialize () işlevini ilan ettim ve tanımladım. İnitialization () işlevinin kodu, “example” sınıfının nesnesi tarafından çağrıldığı yerde genişler. Sınıf örneğinde tanımlanan işlev ekranı (), satır içi olarak bildirilmez, ancak derleyici tarafından satır içi olarak kabul edilebilir. C ++ 'da sınıf içinde tanımlanan fonksiyon, fonksiyonun uzunluğunu göz önüne alarak derleyici tarafından otomatik olarak satır içi yapılır. Makro bir “önişlemci yönergesi” dir. Derleme işleminden önce, program önişlemci tarafından incelenir ve programdaki makroyu nerede bulursa, tanımı gereği bu makroyu değiştirir. Dolayısıyla, makro “değiştirme” olarak kabul edilir. Makroyu bir örnek ile inceleyelim. #Dahil etmek Yukarıdaki kodda, her iki parametrenin daha büyük sayısını karşılaştıran ve bulan bir tane olan GREATER () işlevini de açıkladım. Makroyu yalnızca yeni satırla sonlandırıldığı için makroyu sonlandırmak için noktalı virgül olmadığını görebilirsiniz. Bir makro sadece bir ikame olduğundan, çağrıldığı makro kodunu genişletir. Satır içi işlevler makro işlevinden çok daha ikna edicidir. C ++ ayrıca bir "const" anahtar sözcüğü kullanan bir sabit tanımlamak için daha iyi bir yol sağlar.
Makro tanımı
Sonuç: