SORU
18 Kasım 2009, ÇARŞAMBA


Anahtar kelime yazma 'içi' fonksiyon/yöntemi kullanmalıyım?

Ne zaman C fonksiyon/metod için 0 ** anahtar kelime yazayım mı ?

Bazı cevapları gördükten sonra, bazı ilgili sorular:

  • Ne zaman kullanmalıyımdeğilanahtar sözcük 'ınline' C fonksiyon/yöntem için ? yazmak

  • Derleyici işlev/yöntem ne zaman yapılacağını olmaz''? ınline

  • Eğer bir uygulama olduğu fark eder miçok iş parçacıklıbir yazar 'ınline' fonksiyon/yöntem için?

CEVAP
18 Kasım 2009, ÇARŞAMBA


Oh adamım, benim canımı sıkanlardan biri.

inline Bir Direktif derleyici fonksiyonları için satır içi söylemekten daha static extern Daha fazla detay. , *, *6externstatic bağlantı yönergeleri, neredeyse sadece linker tarafından kullanılan, derleyici değil.

inline işlevi inlined olması gerektiğini düşünüyorum derleyici için ipuçları. 1998, ama bir on yıl sonra derleyici böyle ipuçları ihtiyaçlarını doğru olabilir. İnsanlar genellikle optimize kod yanlış, çoğu derleyici düz çok söz yok saymak değil ''. ipucu

staticdeğişken/fonksiyon adı diğer derleme birimleri kullanılamaz. Linker yanlışlıkla başka bir derleme biriminden statik olarak tanımlanan değişken/Fonksiyon kullanımı yok emin olmak gerekir.

externbu derleme biriminde bu değişken/fonksiyon adı kullanın ama eğer tanımlı değil ise hiç şikayet yok. Linker çözmek ve bazı dış sembol kullanmak için çalıştı tüm kod adresi olduğundan emin olun.

inlinebu işlev, birden çok derleme birimleri olarak tanımlanan olacak, merak etme. Bağlayıcı tüm derleme birim değişken/fonksiyon tek bir örneği kullanmak emin olmak gerekir.

Genellikle ilan, içi bağlantı mantığı zaten var gibi. not: Ancak, şablonlar açık uzmanlaşma ve örnekleme 14* *kullanılacak.


Sorularınıza özel cevaplar:

  • Anahtar kelime yazayım 'ınline' C fonksiyon/yöntem için ?

Tek bir işlev başlığında tanımlı olmasını istediğinizde. İşlevin tanımı birden çok derleme birimleri girebilir sadece daha tam olarak. Derleyici kodunuzu optimize ederken çalışmak için daha fazla bilgi verir gibi başlık dosyasında küçük bir astar gibi) işlevleri tanımlamak için iyi bir fikirdir. Ayrıca derleme süresi artar.

  • Anahtar kelime yazayım değil 'ınline' C fonksiyon/yöntem için ?

Kodunuz eğer derleyici inlines daha hızlı çalışacağını düşünüyorum satır eklemeyin.

  • Derleyici işlev/yöntem ne zaman yapılacağını olmaz''? ınline

Genellikle derleyici bu senden daha iyi yapmak mümkün olacak. Ancak, derleyici işlev tanımı var değil mi kod satır içi seçeneği yok. Kod genellikle optimum seviyede özel yöntemler için sen istemedende inlined.

Kenara __attribute__(( noinline )) GCC kullanılan satır içi uygulaması önlemek için ve visual studio kullanımı __declspec(noinline) gibi.

  • Eğer bir uygulama bir yazar birden çok iş parçacığı, bir önemi var mı 'ınline' fonksiyon/yöntem için?

Çoklu satır içi uygulaması hiçbir şekilde etkilemez.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • andony5589

    andony5589

    7 Aralık 2011
  • george sarintzotis

    george sarin

    2 Aralık 2007
  • jcortes187

    jcortes187

    24 Mart 2006