Soita C++:sta C:stä

Soita C Sta C Sta



Ohjelmoinnissa C:n ja C++:n on usein toimittava yhdessä, tyypillisesti kun päivitetään vanhaa koodia tai yhdistetään eri kielillä olevia moduuleja. C++-koodin käyttäminen C-ohjelmissa on erittäin hyödyllistä ohjelmoijille, varsinkin kun päivitetään vanhaa ohjelmistoa tai sekoitetaan molemmilla kielillä kirjoitettuja osia. Tämä opas näyttää sinulle yksinkertaisten ja hyödyllisten esimerkkien avulla, kuinka C++-funktiot saadaan toimimaan C:n kanssa. C++:n kutsuminen C-ohjelmasta saattaa tuntua hankalalta, mutta tässä artikkelissa selitetään kaikki vaihe vaiheelta, joten on helppo seurata ja alkaa käyttää kahta kieltä yhdessä. Tämä opas on hyödyllinen projekteillesi ohjelmointitietosi tasosta riippumatta.

Perusasioiden ymmärtäminen

Kun kyse on C++-funktioiden kutsumisesta C:stä ja C++-objektien käyttämisestä, useita avainelementtejä on harkittava:

Viitataan C++-luokkiin C:ssä

Yleinen lähestymistapa viitata C++-luokkiin C:ssä sisältää osoittimien käyttämisen luokkiin, jotka voidaan siirtää C- ja C++-koodin välillä.







Nimi Mangle

Jotta estetään nimenmuutokset, jotka voivat vaikuttaa C:n tunnistukseen, on tärkeää pitää nimet johdonmukaisina. Tämä varmistaa, että C pystyy tunnistamaan ja hyödyntämään funktioita ja objekteja oikein.



Otsikkotiedosto kahteen tarkoitukseen

Otsikkotiedostolla on keskeinen rooli, ja se palvelee kahta tarkoitusta sekä C:lle että C++:lle. Se sisältää luokkamäärittelyt, jotka C++ tunnistaa ja kapseloi C:n aksessorifunktiot.



Kuinka soittaa C++:aan C:stä

C++-funktioiden kutsumiseksi C:stä ulkoinen C-ilmoitus on ratkaiseva. Kun sitä käytetään C++-funktioihin, se varmistaa, että funktioiden nimet käsitellään C-tyylillä (käyttäen C-linkkiä) käännösprosessin aikana. C ei tunnista C++:n ominaisuuksia, kuten toimintojen ylikuormitusta ja nimien sotkemista, joita voi esiintyä C++:n kääntämisen aikana. Käyttämällä ulkoista 'C' C++-kääntäjä luo funktioiden nimet, jotka noudattavat C-käytäntöjä, mikä mahdollistaa saumattoman yhteentoimivuuden. Tämä ilmoitus tarjoaa standardoidun käyttöliittymän, jonka avulla C-koodi voi käyttää ja käyttää C++-toimintoja ilman nimiristiriitoja tai yhteensopivuusongelmia. Seuraavassa on esimerkkejä C++:n kutsumisesta C:stä. Ymmärtääksemme, kuinka tämä yhdistelmä toimii, katsotaanpa tapauksia tarkemmin.





Käytännön esimerkkejä: Laske ympyrän pinta-ala soittamalla C++:sta C

Tässä yksinkertaisessa esimerkissä opastamme sinua kuinka voit laskea ympyrän alueen kutsumalla C++-funktiota C:ssä. Tämä koodi koostuu otsikkotiedostosta (circle.h) ja toteutustiedostosta (circle.cpp). Koodin ensimmäinen osa sisältää ulkoisen C-ilmoituksen otsikkotiedostossa. Katso seuraava koodi. Tarkastellaan sitten jokaista koodiriviä erikseen:

#ifndef CIRCLE_AREA
#define CIRCLE_AREA

ulkoinen 'C' {

kaksinkertainen laske_CAalue ( kaksinkertainen rad ) ;

}

#loppu Jos

kaksinkertainen Circle_CArea ( kaksinkertainen rad ) {

palata 3,14159 * rad * rad ;

}

Puretaan jokainen osa:



#ifndef CIRCLE_AREA ja #define CIRCLE_AREA

Nämä rivit ovat osa sisällytyssuojaa, joka varmistaa, että otsikkotiedoston sisältö sisällytetään vain kerran käännösprosessiin. Jos CIRCLE_AREA ei ole määritetty, seuraava koodi sisällytetään ja CIRCLE_AREA määritellään.

ulkoinen 'C'

Tätä syntaksia käytetään ilmoittamaan, että seuraavalla funktiolla on C-linkki. Tämä on välttämätöntä kirjoitettaessa koodia, jota kutsutaan sekä C:stä että C++:sta.

kaksinkertainen laske_CAalue ( kaksinkertainen rad ) ;

Tämä rivi ilmoittaa funktion nimeltä 'calculate_Carea', joka ottaa kaksoisargumentin (rad) ja palauttaa tuplaargumentin.

Otsikkotiedoston ulkoinen C-ilmoitus kehottaa kääntäjää käyttämään funktiolle C-tyylistä linkitystä, jolloin se voidaan kutsua C-koodista. Käytä tätä koodia löytääksesi ympyrän alueen tallentamalla se 'circle.h'-tiedostoon. Kun olet tallentanut tämän otsikkotiedoston, sinun tarvitsee vain sisällyttää se otsikkotiedostoksi C++-ohjelmaan ja suorittaa haluttu toiminto. Seuraava on C-koodi, joka laskee ympyrän alueen. Main.c-tiedosto sisältää C++-otsikon ja kutsuu 'Circle_Carea' suoraan. Katso seuraava koodi:

#include 'circle.h'

int pää ( ) {

kaksinkertainen rads = 5.0 ;

kaksinkertainen alueella = Circle_CArea ( rads ) ;

printf ( 'Ympyrän pinta-ala on:  %.2f \n ' , alueella ) ;

palata 0 ;

}

Tämä yksinkertainen C-ohjelma laskee ja tulostaa ympyrän alueen käyttämällä funktiota, joka on määritelty edellisessä tiedostossa nimeltä 'circle.h'. Puretaan koodi:

#include 'circle.h'

Tämä rivi sisältää ohjelman 'circle.h' otsikkotiedoston sisällön. Otsikkotiedosto sisältää todennäköisesti ympyrälaskuihin liittyvät funktiomääritykset tai makrot.

int pää ( ) {

Ohjelman suoritus alkaa päätoiminnolla, C-ohjelmien aloituspisteellä.

kaksinkertainen rads = 5.0 ;

Double-tyyppinen muuttuja rads ilmoitetaan ja sille annetaan arvo 5.0. Tämä muuttuja edustaa todennäköisesti ympyrän sädettä.

kaksinkertainen alueella = Circle_CArea ( rads ) ;

Funktiota nimeltä 'Circle_Carea' kutsutaan säde rad:illa argumenttina ja tulos tallennetaan muuttuja-alueelle.

printf ( 'Ympyrän pinta-ala on %.2f \n ' , alueella ) ;

Tulos tulostetaan konsoliin käyttämällä 'printf' -toimintoa. 'Ympyrän pinta-ala on: %.2f\n' on muotomerkkijono, jossa on '%f'-paikkamerkki alueen arvolle. '.2' kohdassa '%.2f' määrittää, että vain kaksi desimaaleja tulee näyttää.

palata 0 ;

Päätoiminto päättää palauttamalla 0:n, joka ilmaisee ohjelman onnistuneen suorituksen käyttöjärjestelmässä.

Yhteenvetona voidaan todeta, että otsikkotiedosto ilmoittaa funktion, jossa on C-linkki, ja toteutustiedosto määrittelee ympyrän alueen laskemisen logiikan. Tämä erottelu mahdollistaa koodin käytön sekä C- että C++-ohjelmissa. Katso koodin tulos, joka on annettu seuraavassa kuvassa:

Kuten tuloksesta näkyy, ympyrän laskettu pinta-ala on 78,54, mikä on pinta-alan laskenta = 3,14*5*5 = 78,54. Alueen laskentafunktio määritellään 'circle.h'-otsikkotiedostossa, jota kutsutaan sitten C++-tiedostossa ulkoisen 'C':n avulla.

Johtopäätös

Tässä oppaassa opastimme sinua C++:n integroinnissa C-ohjelmiisi. C++-toiminnon integroiminen C-koodikantoihin vaatii huolellista osoittimien, nimien muokkauksen ja kaksikäyttöisten otsikkotiedostojen harkintaa. Esitetyt esimerkit havainnollistavat käytännön lähestymistapaa tämän integroinnin saavuttamiseksi. Nyt kun olet nähnyt näiden kahden ohjelmointikielen yhdistämisen, sinulla on enemmän työkaluja. C++:n tehon vapauttaminen C:n kanssa työskennellessäsi voi antaa projekteillesi aivan uuden tason toimintoja.