CodeBlanks Logo Icon CodeBlanks

Özet - ABI

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

main.cpp
#include <iostream>

// compute fonksiyonunu extern C ile buraya tanımla

int main() {
    // compute'u çağır ve yazdır
    return 0;
}

Örnek çözüm

main.cpp
#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?

main.cpp
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

Soru
extern "____" void greet();
Cevap
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

Uzman bölümündeki tüm dersler