Derleyicinin programcı tarafından istenip istenmediğini satır içi genişletme yapabilir veya gerçekleştiremeyeceğini biliyorum.
Sadece merak etmekteydim, programlayıcının belli bir işlevi bir araya getirdiğinden emin olabileceği herhangi bir yol var mı?Satır İçi İşlevler
cevap
Oluşturulan koda bakma dışında, no. Bazı uygulamalar bu bilgiyi sağlayabilir, ancak standart tarafından gerekli değildir. inline
veya register
(titreme) gibi
şeyler derleyici öneri vardır ve :-), bunları kabul onları görmezden hatta gizlice arkasından giderken o bunu yaptı o yalan ve bunu yaparken değil ücretsizdir
Bu tür özellikleri kullanmama eğilimindeyim çünkü derleyicinin genellikle kodumdan en iyi performansı nasıl çıkaracağımı bildiğinden daha iyi olduğunu sanıyorum.
Nesne dosyasının sökülmesini okuyun.
Derleyicinizi derleyici kodu oluşturmak için ayarlayın ve orada kontrol edin.
Ve v debug hata ayıklama için farklı bayraklarınız varsa, ikincisini kullandığınızdan emin olun. En azından bazı optimizasyon etkin olmadıkça hiçbir zaman inline olmayan bazı derleyicileri gördüm. –
Kodunuzu profilleyebilir ve ilgi fonksiyonunun arama yığında görünüp görünmediğini görebilirsiniz. Bununla birlikte, yığın örnekleme oranınızın yeterince yüksek olmaması durumunda bir garanti olmadığını varsayalım.
Ama buna satır içi ispat edilebilir: Eğer C
çağırır A
aramaları B
, biliyorsanız, ve sen, sen B
bu çağrı için inlined biliyor A
çağrı yığını C
arayarak görürseniz A
asla doğrudan C
çağrıları .
Çıkış birleştiricisine bakmak dışında bilmenin bir yolu yoktur.
Derleyiciler bugünlerde 'akıllı' ve hangi işlevlerin satır içi ve hangi durumlarda işleneceğine karar veriyorlar.
Kayıt anahtar sözcüğü gibi, derleyiciler de bu günlerde seçim yapıyor ve isteklerinizi gerçekten görmezden geliyorlar. Ne istediğini öğrenmek için bir yol olduğunu sanmıyorum
,
Ama tarafından bir satır içi işlevi olma işlevinin possibilites artırabilir,
fonksiyonun tanım görünür yapma çağrıldığı çeviri birimine. Yani, her zaman başlık dosyasında satır içi işlev tanımını koymak zorunda.
Daha uygun bir soru, programlayıcının derleyici tarafından belirli bir işlevi * çağırdığını * bildiğinin herhangi bir yolu var mı? – Potatoswatter