C'den C++'ı arayın

C Den C I Arayin



Programlamada, genellikle eski bir kodu güncellerken veya çeşitli dillerdeki modülleri birleştirirken, C ve C++'ın birlikte çalışmasına ihtiyaç vardır. C programlarında C++ kodunu kullanmak, özellikle eski bir yazılımı güncellerken veya her iki dilde yazılmış parçaları karıştırırken programcılar için çok faydalıdır. Bu kılavuz size C++ işlevlerinin C ile nasıl çalışacağını basit ve kullanışlı örneklerle gösterecektir. Bir C programından C++'ı çağırmak zor görünebilir, ancak bu makale her şeyi adım adım açıklamaktadır, bu nedenle takip etmek ve iki dili birlikte kullanmaya başlamak kolaydır. Bu kılavuz, programlama bilgi seviyeniz ne olursa olsun projeleriniz için faydalıdır.

Temelleri Anlamak

C++ işlevlerini C'den çağırmak ve C++ nesnelerini kullanmak söz konusu olduğunda, birkaç temel öğenin dikkate alınması gerekir:

C'deki C++ Sınıflarına Referans Verme

C'deki C++ sınıflarına başvuruda bulunmaya yönelik yaygın bir yaklaşım, C ve C++ kodu arasında aktarılabilecek sınıflara yönelik işaretçilerin kullanılmasını içerir.







İsim Mangle

C'de tanımayı etkileyebilecek ad değişikliklerini önlemek için adların tutarlı tutulması çok önemlidir. Bu, C'nin işlevleri ve nesneleri doğru şekilde tanımlayabilmesini ve kullanabilmesini sağlar.



Çift Amaçlı Başlık Dosyası

Bir başlık dosyası, hem C hem de C++ için ikili bir amaca hizmet eden çok önemli bir rol oynar. C++ tarafından tanınabilen sınıf tanımlarını içerir ve C için erişimci işlevlerini kapsar.



C'den C++ Nasıl Çağrılır

C++ işlevlerini C'den çağırmak için harici “C” bildirimi çok önemlidir. C++ işlevlerine uygulandığında, derleme işlemi sırasında işlev adlarının C stilinde (C bağlantısı kullanılarak) ele alınmasını sağlar. C, C++ derlemesi sırasında oluşabilecek işlev aşırı yüklemesi ve ad karışıklığı gibi C++ özelliklerini tanımıyor. C++ derleyicisi, harici 'C'yi kullanarak, C kurallarına uygun işlev adları oluşturarak kusursuz bir birlikte çalışabilirlik sağlar. Bu bildirim, bir C kodunun adlandırma çakışmaları veya uyumluluk sorunlarıyla karşılaşmadan C++ işlevlerine erişmesine ve bunları kullanmasına olanak tanıyan standartlaştırılmış bir arabirim sağlar. Aşağıda C++'ı C'den çağırma örnekleri verilmiştir. Bu kombinasyonun nasıl çalıştığını anlamak için örneklere daha yakından bakalım.





Pratik Örnekler: C'den C++'ı Çağırarak Çemberin Alanını Hesaplama

Bu basit örnekte, C dilinde bir C++ fonksiyonunu çağırarak bir dairenin alanını nasıl hesaplayabileceğiniz konusunda size rehberlik edeceğiz. Bu kod bir başlık dosyasından (circle.h) ve bir uygulama dosyasından (circle.cpp) oluşur. Kodun ilk kısmı başlık dosyasındaki harici C bildirimini içerir. Aşağıdaki koda bakın. Daha sonra her kod satırını ayrı ayrı ele alalım:

#ifndef CIRCLE_AREA
#CIRCLE_AREA'yı tanımla

dış 'C' {

çift hesapla_CArea ( çift harika ) ;

}

#endif

çift Circle_CArea ( çift harika ) {

geri dönmek 3.14159 * harika * harika ;

}

Her bir parçayı parçalayalım:



#ifndef CIRCLE_AREA ve #define CIRCLE_AREA

Bu satırlar, başlık dosyasının içeriğinin derleme sürecine yalnızca bir kez dahil edilmesini sağlayan içerme korumalarının bir parçasıdır. CIRCLE_AREA tanımlanmadıysa sonraki kod dahil edilecek ve CIRCLE_AREA tanımlanacaktır.

dış 'C'

Bu sözdizimi, aşağıdaki işlevin bir C bağlantısına sahip olduğunu bildirmek için kullanılır. Hem C hem de C++'dan çağrılacak bir kod yazarken bu çok önemlidir.

çift hesapla_CArea ( çift harika ) ;

Bu satır, double argümanı (rad) alan ve double döndüren “calculate_Carea” adında bir fonksiyonu bildirir.

Başlık dosyasındaki harici “C” bildirimi, derleyiciye işlev için C tarzı bir bağlantı kullanması konusunda bilgi verir ve işlevi C kodundan çağrılabilir hale getirir. Bir dairenin alanını bulmak için bu kodu “circle.h” dosyasına kaydederek kullanın. Bu başlık dosyasını kaydettikten sonra tek yapmanız gereken bunu C++ programına başlık dosyası olarak eklemek ve istediğiniz işlevi gerçekleştirmektir. Aşağıdaki dairenin alanını hesaplayan C kodudur. “main.c” dosyası C++ başlığını içerir ve doğrudan “Circle_Carea”yı çağırır. Aşağıdaki koda bakın:

#include 'daire.h'

int ana ( ) {

çift ışınlar = 5.0 ;

çift alan = Circle_CArea ( ışınlar ) ;

baskı ( 'Çemberin alanı: %.2f \N ' , alan ) ;

geri dönmek 0 ;

}

Bu basit C programı, önceki “circle.h” dosyasında tanımlanan bir fonksiyonu kullanarak bir dairenin alanını hesaplar ve yazdırır. Kodu parçalayalım:

#'daire.h'yi dahil et

Bu satır programdaki “circle.h” başlık dosyasının içeriğini içerir. Başlık dosyası muhtemelen daire hesaplamalarıyla ilgili işlev bildirimlerini veya makroları içerir.

int ana ( ) {

Programın yürütülmesi, C programlarının giriş noktası olan ana işlevle başlar.

çift ışınlar = 5.0 ;

Double tipinde bir rads değişkeni bildirilir ve 5,0 değeriyle atanır. Bu değişken muhtemelen dairenin yarıçapını temsil ediyor.

çift alan = Circle_CArea ( ışınlar ) ;

“Circle_Carea” adlı bir fonksiyon, argüman olarak yarıçap radsları ile çağrılır ve sonuç, değişken alanda saklanır.

baskı ( 'Çemberin alanı: %.2f \N ' , alan ) ;

Sonuç “printf” kullanılarak konsola yazdırılır. “Çemberin alanı: %.2f\n” dizesi, alan değeri için “%f” yer tutucusuna sahip bir biçim dizesidir. “%.2f” içindeki “.2” yalnızca iki ondalık basamağın görüntülenmesi gerektiğini belirtir.

geri dönmek 0 ;

Ana işlev, programın işletim sisteminde başarılı bir şekilde yürütüldüğünü gösteren 0 değerini döndürerek sona erer.

Özetle, başlık dosyası C bağlantılı bir işlevi bildirir ve uygulama dosyası bir dairenin alanını hesaplama mantığını tanımlar. Bu ayırma, kodun hem C hem de C++ programlarında kullanılmasına olanak tanır. Aşağıdaki resimde verilen kodun çıktısına bakın:

Çıktıda gördüğünüz gibi dairenin hesaplanan alanı 78,54 yani alan = 3,14*5*5 = 78,54'ün hesaplamasıdır. Alanı hesaplama işlevi “circle.h” başlık dosyasında tanımlanır ve daha sonra C++ dosyasında extern “C” yardımıyla çağrılır.

Çözüm

Bu kılavuzda C++'ı C programlarınıza entegre etme sürecinde size rehberlik ettik. Bir C++ işlevini C kod tabanlarına entegre etmek, işaretçilerin, ad yönetiminin ve çift amaçlı başlık dosyalarının dikkatli bir şekilde değerlendirilmesini gerektirir. Sunulan örnekler bu entegrasyonun sağlanmasına yönelik pratik bir yaklaşımı göstermektedir. Artık bu iki programlama dilini nasıl bağlayacağınızı gördüğünüze göre daha fazla araca sahipsiniz. C ile çalışırken C++'ın gücünün kilidini açmak, projelerinize tamamen yeni bir işlevsellik düzeyi kazandırabilir.