Chiama C++ da C

Chiama C Da C



Nella programmazione, spesso è necessario che C e C++ lavorino insieme, in genere quando si aggiorna un vecchio codice o si combinano i moduli in vari linguaggi. Usare il codice C++ nei programmi C è molto utile per i programmatori, soprattutto quando si aggiorna un vecchio software o si mescolano parti scritte in entrambi i linguaggi. Questa guida ti mostrerà come far funzionare le funzioni C++ con C con esempi semplici e utili. Richiamare C++ da un programma C potrebbe sembrare complicato, ma questo articolo spiega tutto passo dopo passo, quindi è facile seguire e iniziare a utilizzare i due linguaggi insieme. Questa guida è utile per i tuoi progetti indipendentemente dal tuo livello di conoscenza della programmazione.

Comprendere le nozioni di base

Quando si tratta di richiamare le funzioni C++ da C e utilizzare gli oggetti C++, è necessario considerare diversi elementi chiave:

Fare riferimento alle classi C++ in C

Un approccio comune per fare riferimento alle classi C++ in C prevede l'utilizzo di puntatori a classi che possono essere passate tra il codice C e C++.







Nome Mangle

Per evitare modifiche ai nomi che possano influire sul riconoscimento in C, è fondamentale mantenere i nomi coerenti. Ciò garantisce che C possa identificare e utilizzare correttamente le funzioni e gli oggetti.



File di intestazione per duplice scopo

Un file di intestazione svolge un ruolo fondamentale, svolgendo un duplice scopo sia per C che per C++. Include le definizioni di classe riconoscibili da C++ e incapsula le funzioni di accesso per C.



Come chiamare C++ da C

Per chiamare le funzioni C++ da C, la dichiarazione extern “C” è fondamentale. Quando applicato alle funzioni C++, garantisce che i nomi delle funzioni vengano trattati in stile C (utilizzando il collegamento C) durante il processo di compilazione. C non riconosce le funzionalità C++ come l'overload delle funzioni e la modifica dei nomi che possono verificarsi durante la compilazione C++. Utilizzando extern 'C', il compilatore C++ genera i nomi delle funzioni che aderiscono alle convenzioni C, consentendo un'interoperabilità senza soluzione di continuità. Questa dichiarazione fornisce un'interfaccia standardizzata, consentendo a un codice C di accedere e utilizzare le funzioni C++ senza incontrare conflitti di denominazione o problemi di compatibilità. Di seguito sono riportati gli esempi di chiamata di C++ da C. Per comprendere come funziona questa combinazione, esaminiamo più da vicino le istanze.





Esempi pratici: calcolare l'area di un cerchio chiamando C++ da C

In questo semplice esempio ti guideremo su come calcolare l'area di un cerchio chiamando una funzione C++ in C. Questo codice è costituito da un file di intestazione (circle.h) e un file di implementazione (circle.cpp). La prima parte del codice prevede la dichiarazione C extern nel file header. Vedere il codice seguente. Quindi, elaboriamo singolarmente ciascuna riga di codice:

#ifndef CIRCLE_AREA
#definisce CIRCLE_AREA

esterno 'C' {

Doppio calcola_CArea ( Doppio rad ) ;

}

#finisci se

Doppio Circle_CArea ( Doppio rad ) {

ritorno 3.14159 * rad * rad ;

}

Analizziamo ogni parte:



#ifndef CIRCLE_AREA e #define CIRCLE_AREA

Queste righe fanno parte delle protezioni di inclusione che garantiscono che il contenuto del file di intestazione venga incluso solo una volta nel processo di compilazione. Se CIRCLE_AREA non è definita, il codice successivo verrà incluso e verrà definita CIRCLE_AREA.

esterno 'C'

Questa sintassi viene utilizzata per dichiarare che la seguente funzione ha un collegamento C. Ciò è essenziale quando si scrive un codice che verrà chiamato sia da C che da C++.

Doppio calcola_CArea ( Doppio rad ) ;

Questa riga dichiara una funzione denominata 'calculate_Carea' che accetta un argomento double (rad) e restituisce un double.

La dichiarazione extern 'C' nel file di intestazione informa il compilatore di utilizzare un collegamento in stile C per la funzione, rendendola richiamabile dal codice C. Utilizza questo codice per trovare l'area di un cerchio salvandolo in un file 'circle.h'. Una volta salvato questo file di intestazione, tutto ciò che devi fare è includerlo come file di intestazione nel programma C++ ed eseguire la funzione desiderata. Quello che segue è il codice C che calcola l'area di un cerchio. Il file 'main.c' include l'intestazione C++ e chiama direttamente 'Circle_Carea'. Vedere il seguente codice:

#include 'cerchio.h'

int principale ( ) {

Doppio rad = 5.0 ;

Doppio la zona = Circle_CArea ( rad ) ;

printf ( 'L'area del cerchio è: %.2f \N ' , la zona ) ;

ritorno 0 ;

}

Questo semplice programma in C calcola e stampa l'area di un cerchio utilizzando una funzione definita nel file precedente denominata 'circle.h'. Analizziamo il codice:

#include 'cerchio.h'

Questa riga include il contenuto del file di intestazione 'circle.h' nel programma. Il file di intestazione probabilmente contiene le dichiarazioni di funzioni o le macro correlate ai calcoli del cerchio.

int principale ( ) {

L'esecuzione del programma inizia con la funzione principale, il punto di ingresso per i programmi C.

Doppio rad = 5.0 ;

Viene dichiarata una variabile rads di tipo double a cui viene assegnato il valore 5.0. Questa variabile probabilmente rappresenta il raggio del cerchio.

Doppio la zona = Circle_CArea ( rad ) ;

Viene chiamata una funzione denominata 'Circle_Carea' con il raggio rad come argomento e il risultato viene memorizzato nell'area variabile.

printf ( 'L'area del cerchio è: %.2f \N ' , la zona ) ;

Il risultato viene stampato sulla console utilizzando 'printf'. La stringa 'L'area del cerchio è: %.2f\n' è una stringa di formato con un segnaposto '%f' per il valore dell'area. Il “.2” in “%.2f” specifica che devono essere visualizzate solo due cifre decimali.

ritorno 0 ;

La funzione main conclude restituendo 0 che indica l'esecuzione riuscita del programma nel sistema operativo.

In sintesi, il file di intestazione dichiara una funzione con collegamento C e il file di implementazione definisce la logica per il calcolo dell'area di un cerchio. Questa separazione consente di utilizzare il codice sia nei programmi C che in C++. Fare riferimento all'output del codice riportato nell'immagine seguente:

Come puoi vedere nell'output, l'area calcolata del cerchio è 78,54 che è il calcolo di area = 3,14*5*5 = 78,54. La funzione per calcolare l'area è definita nel file header “circle.h” che viene poi richiamato nel file C++ con l'aiuto di extern “C”.

Conclusione

In questa guida ti abbiamo guidato attraverso il processo di integrazione del C++ nei tuoi programmi C. L'integrazione di una funzionalità C++ nelle basi di codice C richiede un'attenta considerazione dei puntatori, della manipolazione dei nomi e dei file di intestazione a doppio scopo. Gli esempi forniti illustrano un approccio pratico per raggiungere questa integrazione. Ora che hai visto come connettere questi due linguaggi di programmazione, hai più strumenti. Sfruttare la potenza del C++ mentre lavori con C potrebbe dare ai tuoi progetti un livello di funzionalità completamente nuovo.