Özet - ABI
- C++ kursu
- Uzman
- Ders 24/47
- 5 dk
mangling, extern C ve stability'yi birleştirerek bir C-compatible kütüphane yazarsın.
Özet - ABI
Bu grupta ABI'nin temel kavramlarını gördün: ABI tanımı, name mangling, Itanium ABI, extern C ve ABI stability. Hepsi derlenmiş kodun birbiriyle uyumunu sağlar.
Şimdi bunları bir extern C fonksiyonu örneğinde birleştireceksin. extern "C" ile manglesiz bir fonksiyon tanımlayıp çağıracaksın; bu, C ve C++ arasında köprü kurmanın temel desenidir.
extern C ile fonksiyon
Bir extern "C" fonksiyonu tanımlamak için extern "C" öneki kullanılır: extern "C" int compute(int x) { return x + 100; }. Bu fonksiyonun sembol adı compute olur; mangling yapılmaz.
main içinde std::cout << compute(23); çağrısı 123 sonucunu verir. Bu, C kütüphanesini C++ programından çağırmanın temel desenidir; aynı zamanda C++ fonksiyonunu C kodundan erişilebilir kılar.
Uygulama extern C compute yaz
extern "C" int compute(int x) yaz; gövdesi return x + 100;. main içinde std::cout << compute(23); yaz.
Başlangıç kodu
#include <iostream>
// compute fonksiyonunu extern C ile buraya tanımla
int main() {
// compute'u çağır ve yazdır
return 0;
}Örnek çözüm
#include <iostream>
extern "C" int compute(int x) {
return x + 100;
}
int main() {
std::cout << compute(23);
return 0;
}Beklenen çıktı
123
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 extern "C" ne yapar?
extern "C" void greet();- Sınıf boyutunu küçültür
- Kodu gizler
- Programı hızlandırır
- Name mangling'i kapatır Doğru cevap
Açıklama: extern C, sembol adını kaynak koddaki adla aynı tutar.
2 extern C bildirimini tamamla
extern "____" void greet();
extern "C" void greet();
Açıklama: extern "C" ile C bağlantısı istenir.
3 Kavramı özelliğine eşle
| Kavram | Anlamı |
|---|---|
ABI |
İkili uyumluluk |
name mangling |
Sembol adlandırma |
extern C |
Manglesiz sembol |
PIMPL |
Gizli uygulama |