Arkaik C ve C ++ inline
gibi , register
olası bir optimizasyon hakkında derleyiciye bir öneri (öneri dışında bir şey).
Modern C ++ 'da, inline
bağlayıcıya farklı çeviri birimlerinde birden fazla tanım (bildirim değil) bulunursa, hepsi aynıdır ve bağlayıcı serbestçe birini tutabilir ve diğerlerini atabilir.
inline
üstbilgi dosyasında bir işlev (ne kadar karmaşık veya "doğrusal" olursa olsun) tanımlanırsa, bağlayıcı tarafından "çoklu tanım" hatası almadan birden çok kaynağın dahil edilmesine izin vermek için zorunludur.
Sınıf içinde tanımlanan üye işlevler, şablon işlevlerinde olduğu gibi (genel işlevlerin aksine) varsayılan olarak "satır içi" dir.
//fileA.h
inline void afunc()
{ std::cout << "this is afunc" << std::endl; }
//file1.cpp
#include "fileA.h"
void acall()
{ afunc(); }
//main.cpp
#include "fileA.h"
void acall();
int main()
{
afunc();
acall();
}
//output
this is afunc
this is afunc
FileA.h dosyasının iki .cpp dosyasına eklendiğini ve iki örneğiyle sonuçlandığını unutmayın afunc()
. Bağlayıcı bunlardan birini atar. Hayır inline
belirtilirse, bağlayıcı şikayet edecektir.