Neden C başlığındaki işlevleri satıriçi?
Sınıf üye işlev bildirimi tek işlevi gerçek olan bir uygulama inline
şeklinde bir fonksiyon tanımlamak için gerekli değildir. Başlık dosyasında örneğin,:
struct foo{
void bar(); // no need to define this as inline
}
Neden sınıfları bir işlevin satır içi uygulaması yaparvarüstbilgi dosyası için? Neden içi .cpp
dosyası işlev koyabilir mi? .cpp
dosyasında satır tanım koymak deneyin nerede olursa çizgisinde bir hata alıyorum:
error LNK2019: unresolved external symbol
"public: void __thiscall foo::bar(void)"
(?bar@foo@@QAEXXZ) referenced in function _main
1>C:\Users\Me\Documents\Visual Studio 2012\Projects\inline\Debug\inline.exe
: fatal error LNK1120: 1 unresolved externals
CEVAP
inline
bir fonksiyonun tanım nedeniyle bir üstbilgi dosyasında ama olmak zorunda değilbir tanım kuralısatır içi işlevleri için işlev için aynı tanımı kullanan her çeviri biriminde bulunması gerekir.
Bunu başarmak için en kolay yolu bir üstbilgi dosyasında tanımlı koyarak.
Eğer tek bir kaynak dosyada bir fonksiyon tanımını koymak istiyorsanız o zaman inline
ilan etmemelisin. Bir işlevi yok inline
derleyici olamaz işlevi satıriçi anlamına gelmez ilan etti.
İlan edip, bir işlevi inline
genellikle hangi sürümü dayalı bir seçimdirbir tanımlama kurallarıseni takip etmek için en mantıklı; inline
ekleme ve sonra bir sonraki kısıtlamaları ile sınırlı olmak pek bir anlam ifade etmiyor.
Neden işlevleri ve yöntemleri PHP büyü...
Saf sanal işlevler satıriçi bir tanım ...
Neden hep STL Aralık belirlemek için t...
Neden Temel İşlevleri üzerinde PHP OOP...
Neden sıralanmamış bir dizi daha hızlı...