Zadzwoń do C++ z C

Zadzwon Do C Z C



W programowaniu często istnieje potrzeba współpracy języków C i C++, zazwyczaj podczas aktualizacji starego kodu lub łączenia modułów w różnych językach. Używanie kodu C++ w programach C jest bardzo pomocne dla programistów, szczególnie podczas aktualizacji starego oprogramowania lub miksowania części napisanych w obu językach. Ten przewodnik pokaże Ci, jak sprawić, by funkcje C++ działały z C, na prostych i przydatnych przykładach. Wywoływanie języka C++ z programu C może wydawać się trudne, ale w tym artykule wyjaśniono wszystko krok po kroku, więc łatwo będzie śledzić dalej i zacząć używać obu języków razem. Ten przewodnik będzie pomocny w Twoich projektach niezależnie od poziomu Twojej wiedzy programistycznej.

Zrozumienie podstaw

Jeśli chodzi o wywoływanie funkcji C++ z C i używanie obiektów C++, należy wziąć pod uwagę kilka kluczowych elementów:

Odwoływanie się do klas C++ w C

Typowe podejście do odwoływania się do klas C++ w C polega na użyciu wskaźników do klas, które mogą być przekazywane pomiędzy kodem C i C++.







Imię Mangle

Aby zapobiec zmianom nazw, które mogą mieć wpływ na rozpoznawanie w języku C, ważne jest, aby nazwy były spójne. Dzięki temu C może poprawnie identyfikować i wykorzystywać funkcje i obiekty.



Plik nagłówkowy do podwójnego zastosowania

Plik nagłówkowy odgrywa kluczową rolę, służąc podwójnemu celowi zarówno w C, jak i C++. Zawiera definicje klas rozpoznawalne przez C++ i hermetyzuje funkcje dostępu dla C.



Jak wywołać C++ z C

Aby wywołać funkcje C++ z C, kluczowa jest zewnętrzna deklaracja „C”. Po zastosowaniu do funkcji C++ zapewnia, że ​​nazwy funkcji będą traktowane w stylu C (przy użyciu połączenia C) podczas procesu kompilacji. C nie rozpoznaje funkcji C++, takich jak przeciążanie funkcji i zmienianie nazw, które mogą wystąpić podczas kompilacji C++. Używając zewnętrznego „C”, kompilator C++ generuje nazwy funkcji zgodne z konwencjami C, umożliwiając bezproblemową interoperacyjność. Ta deklaracja zapewnia ustandaryzowany interfejs, umożliwiający kodowi C dostęp do funkcji C++ i korzystanie z nich bez napotykania konfliktów nazewnictwa lub problemów ze zgodnością. Poniżej znajdują się przykłady wywoływania C++ z C. Aby zrozumieć, jak działa ta kombinacja, przyjrzyjmy się bliżej instancjom.





Praktyczne przykłady: Oblicz pole koła, wywołując C++ z C

W tym prostym przykładzie poprowadzimy Cię, jak obliczyć pole koła, wywołując funkcję C++ w C. Kod ten składa się z pliku nagłówkowego (circle.h) i pliku implementacyjnego (circle.cpp). Pierwsza część kodu zawiera zewnętrzną deklarację C w pliku nagłówkowym. Zobacz poniższy kod. Następnie omówmy każdą linię kodu z osobna:

#ifndef OKRĄG_OBSZAR
#zdefiniuj OKRĄG_OBSZAR

zewnętrzny 'C' {

podwójnie oblicz_CArea ( podwójnie rad ) ;

}

#endif

podwójnie Okrąg_CArea ( podwójnie rad ) {

powrót 3.14159 * rad * rad ;

}

Podzielmy każdą część:



#ifndef CIRCLE_AREA i #define CIRCLE_AREA

Linie te stanowią część zabezpieczeń włączania, które zapewniają, że zawartość pliku nagłówkowego zostanie uwzględniona tylko raz w procesie kompilacji. Jeżeli nie zdefiniowano CIRCLE_AREA, zostanie uwzględniony kolejny kod i zostanie zdefiniowane CIRCLE_AREA.

zewnętrzny 'C'

Ta składnia służy do deklarowania, że ​​następująca funkcja ma powiązanie w języku C. Jest to niezbędne podczas pisania kodu, który będzie wywoływany zarówno w C, jak i C++.

podwójnie oblicz_CArea ( podwójnie rad ) ;

W tej linii deklarowana jest funkcja o nazwie „calculate_Carea”, która przyjmuje podwójny argument (rad) i zwraca wartość podwójną.

Zewnętrzna deklaracja „C” w pliku nagłówkowym informuje kompilator, aby użył dla funkcji połączenia w stylu C, dzięki czemu będzie można ją wywołać z kodu C. Użyj tego kodu, aby znaleźć obszar koła, zapisując go w pliku „circle.h”. Po zapisaniu tego pliku nagłówkowego wystarczy dołączyć go jako plik nagłówkowy do programu C++ i wykonać żądaną funkcję. Poniżej znajduje się kod C, który oblicza pole koła. Plik „main.c” zawiera nagłówek C++ i bezpośrednio wywołuje „Circle_Carea”. Zobacz następujący kod:

#include „okrąg.h”

wew główny ( ) {

podwójnie rady = 5,0 ;

podwójnie obszar = Okrąg_CArea ( rady ) ;

drukuj ( „Obszar koła wynosi:  %.2f \N ' , obszar ) ;

powrót 0 ;

}

Ten prosty program w języku C oblicza i drukuje pole koła za pomocą funkcji zdefiniowanej w poprzednim pliku o nazwie „circle.h”. Rozłóżmy kod:

#include „okrąg.h”

Linia ta zawiera zawartość pliku nagłówkowego „circle.h” w programie. Plik nagłówkowy prawdopodobnie zawiera deklaracje funkcji lub makra związane z obliczeniami okręgów.

wew główny ( ) {

Wykonywanie programu rozpoczyna się od funkcji głównej, punktu wejścia dla programów C.

podwójnie rady = 5,0 ;

Deklarowana jest zmienna rads typu double i przypisuje się jej wartość 5.0. Ta zmienna prawdopodobnie reprezentuje promień okręgu.

podwójnie obszar = Okrąg_CArea ( rady ) ;

Wywoływana jest funkcja o nazwie „Circle_Carea” z promieniem rad jako argumentem, a wynik jest zapisywany w obszarze zmiennych.

drukuj ( „Obszar koła wynosi: %.2f \N ' , obszar ) ;

Wynik jest drukowany na konsoli za pomocą „printf”. Ciąg „Obszar okręgu to: %.2f\n” to ciąg formatujący z symbolem zastępczym „%f” dla wartości pola. Wartość „.2” w „%.2f” określa, że ​​powinny być wyświetlane tylko dwa miejsca po przecinku.

powrót 0 ;

Funkcja główna kończy się zwróceniem wartości 0, co oznacza pomyślne wykonanie programu w systemie operacyjnym.

Podsumowując, plik nagłówkowy deklaruje funkcję z połączeniem w C, a plik implementacyjny definiuje logikę obliczania pola koła. To oddzielenie pozwala na użycie kodu zarówno w programach C, jak i C++. Zapoznaj się z wynikami kodu pokazanymi na poniższym obrazku:

Jak widać na wynikach, obliczona powierzchnia koła wynosi 78,54, co stanowi obliczenie pola = 3,14*5*5 = 78,54. Funkcja obliczająca pole jest zdefiniowana w pliku nagłówkowym „circle.h”, który jest następnie wywoływany w pliku C++ za pomocą zewnętrznego „C”.

Wniosek

W tym przewodniku przeprowadziliśmy Cię przez proces integracji języka C++ z programami w języku C. Integracja funkcjonalności C++ z bazami kodu C wymaga dokładnego rozważenia wskaźników, manipulowania nazwami i plików nagłówkowych o podwójnym przeznaczeniu. Podane przykłady ilustrują praktyczne podejście do osiągnięcia tej integracji. Teraz, gdy wiesz, jak połączyć te dwa języki programowania, masz więcej narzędzi. Odblokowanie mocy C++ podczas pracy z C może zapewnić Twoim projektom zupełnie nowy poziom funkcjonalności.