Καλέστε το C++ από το C

Kaleste To C Apo To C



Στον προγραμματισμό, υπάρχει συχνά ανάγκη η C και η C++ να συνεργάζονται, συνήθως κατά την ενημέρωση ενός παλιού κώδικα ή τον συνδυασμό των λειτουργικών μονάδων σε διάφορες γλώσσες. Η χρήση του κώδικα C++ σε προγράμματα C είναι πολύ χρήσιμη για τους προγραμματιστές, ειδικά κατά την ενημέρωση ενός παλιού λογισμικού ή την ανάμειξη των τμημάτων που είναι γραμμένα και στις δύο γλώσσες. Αυτός ο οδηγός θα σας δείξει πώς να κάνετε τις συναρτήσεις C++ να λειτουργούν με το C με απλά και χρήσιμα παραδείγματα. Η κλήση της C++ από ένα πρόγραμμα C μπορεί να φαίνεται δύσκολη, αλλά αυτό το άρθρο εξηγεί τα πάντα βήμα προς βήμα, επομένως είναι εύκολο να ακολουθήσετε και να αρχίσετε να χρησιμοποιείτε τις δύο γλώσσες μαζί. Αυτός ο οδηγός είναι χρήσιμος για τα έργα σας ανεξάρτητα από το επίπεδο των γνώσεών σας στον προγραμματισμό.

Κατανόηση των Βασικών

Όταν πρόκειται για την κλήση των συναρτήσεων C++ από το C και τη χρήση των αντικειμένων C++, πολλά βασικά στοιχεία χρειάζονται προσοχή:

Αναφορά στις τάξεις C++ στο C

Μια κοινή προσέγγιση για την αναφορά στις κλάσεις C++ στο C περιλαμβάνει τη χρήση δεικτών σε κλάσεις που μπορούν να περάσουν μεταξύ του κώδικα C και C++.







Όνομα Mangle

Για να αποτρέψετε τις αλλαγές ονομάτων που μπορούν να επηρεάσουν μια αναγνώριση στο C, είναι σημαντικό να διατηρήσετε τα ονόματα συνεπή. Αυτό διασφαλίζει ότι ο C μπορεί να αναγνωρίσει και να χρησιμοποιήσει σωστά τις λειτουργίες και τα αντικείμενα.



Αρχείο κεφαλίδας για διπλό σκοπό

Ένα αρχείο κεφαλίδας παίζει κεντρικό ρόλο, εξυπηρετώντας διπλό σκοπό τόσο για τη C όσο και για τη C++. Περιλαμβάνει τους ορισμούς κλάσεων που είναι αναγνωρίσιμοι από τη C++ και ενσωματώνει τις συναρτήσεις πρόσβασης για το C.



Πώς να καλέσετε το C++ από το C

Για να καλέσετε τις συναρτήσεις C++ από το C, η εξωτερική δήλωση 'C' είναι ζωτικής σημασίας. Όταν εφαρμόζεται σε συναρτήσεις C++, διασφαλίζει ότι τα ονόματα των συναρτήσεων αντιμετωπίζονται στο στυλ C (χρησιμοποιώντας τη σύνδεση C) κατά τη διαδικασία μεταγλώττισης. Το C δεν αναγνωρίζει τις δυνατότητες της C++ όπως η υπερφόρτωση συναρτήσεων και η παραμόρφωση ονομάτων που μπορεί να προκύψουν κατά τη μεταγλώττιση της C++. Χρησιμοποιώντας το εξωτερικό 'C', ο μεταγλωττιστής C++ δημιουργεί τα ονόματα συναρτήσεων που συμμορφώνονται με τις συμβάσεις C, επιτρέποντας μια απρόσκοπτη διαλειτουργικότητα. Αυτή η δήλωση παρέχει μια τυποποιημένη διεπαφή, που επιτρέπει σε έναν κώδικα C να έχει πρόσβαση και να χρησιμοποιεί τις λειτουργίες C++ χωρίς να αντιμετωπίζει διενέξεις ονομασίας ή προβλήματα συμβατότητας. Τα παρακάτω είναι τα παραδείγματα κλήσης της C++ από το C. Για να κατανοήσουμε πώς λειτουργεί αυτός ο συνδυασμός, ας δούμε πιο προσεκτικά τις περιπτώσεις.





Πρακτικά Παραδείγματα: Υπολογίστε το εμβαδόν ενός κύκλου καλώντας το C++ από το C

Σε αυτό το απλό παράδειγμα, θα σας καθοδηγήσουμε για το πώς μπορείτε να υπολογίσετε το εμβαδόν ενός κύκλου καλώντας μια συνάρτηση C++ σε C. Αυτός ο κώδικας αποτελείται από ένα αρχείο κεφαλίδας (circle.h) και ένα αρχείο υλοποίησης (circle.cpp). Το πρώτο μέρος του κώδικα περιλαμβάνει την εξωτερική δήλωση C στο αρχείο κεφαλίδας. Δείτε τον παρακάτω κώδικα. Στη συνέχεια, ας αναλύσουμε κάθε γραμμή κώδικα ξεχωριστά:

#ifndef CIRCLE_AREA
#define CIRCLE_AREA

εξωτερικό 'ΝΤΟ' {

διπλό υπολογισμός_CArea ( διπλό rad ) ;

}

#τέλος εαν

διπλό Circle_CArea ( διπλό rad ) {

ΕΠΙΣΤΡΟΦΗ 3,14159 * rad * rad ;

}

Ας αναλύσουμε κάθε μέρος:



#ifndef CIRCLE_AREA και #define CIRCLE_AREA

Αυτές οι γραμμές αποτελούν μέρος των προστατευτικών περιεχομένων που διασφαλίζουν ότι τα περιεχόμενα του αρχείου κεφαλίδας περιλαμβάνονται μόνο μία φορά στη διαδικασία μεταγλώττισης. Εάν δεν έχει οριστεί η CIRCLE_AREA, θα συμπεριληφθεί ο επόμενος κωδικός και θα οριστεί η CIRCLE_AREA.

εξωτερικό 'ΝΤΟ'

Αυτή η σύνταξη χρησιμοποιείται για να δηλώσει ότι η ακόλουθη συνάρτηση έχει σύνδεση C. Αυτό είναι απαραίτητο όταν γράφετε έναν κώδικα που θα καλείται τόσο από C όσο και από C++.

διπλό υπολογισμός_CArea ( διπλό rad ) ;

Αυτή η γραμμή δηλώνει μια συνάρτηση με το όνομα 'calculate_Carea' που παίρνει ένα διπλό όρισμα (rad) και επιστρέφει ένα διπλό.

Η εξωτερική δήλωση 'C' στο αρχείο κεφαλίδας ενημερώνει τον μεταγλωττιστή να χρησιμοποιήσει μια σύνδεση τύπου C για τη συνάρτηση, καθιστώντας την καλούμενη από τον κώδικα C. Χρησιμοποιήστε αυτόν τον κώδικα για να βρείτε την περιοχή ενός κύκλου αποθηκεύοντάς τον σε ένα αρχείο 'circle.h'. Μόλις αποθηκεύσετε αυτό το αρχείο κεφαλίδας, το μόνο που χρειάζεται να κάνετε είναι να το συμπεριλάβετε ως αρχείο κεφαλίδας στο πρόγραμμα C++ και να εκτελέσετε την επιθυμητή λειτουργία. Ακολουθεί ο κωδικός C που υπολογίζει το εμβαδόν ενός κύκλου. Το αρχείο 'main.c' περιλαμβάνει την κεφαλίδα C++ και καλεί απευθείας το 'Circle_Carea'. Δείτε τον παρακάτω κώδικα:

#include 'circle.h'

ενθ κύριος ( ) {

διπλό rads = 5.0 ;

διπλό περιοχή = Circle_CArea ( rads ) ;

printf ( 'Η  περιοχή του κύκλου είναι:  %.2f \n ' , περιοχή ) ;

ΕΠΙΣΤΡΟΦΗ 0 ;

}

Αυτό το απλό πρόγραμμα C υπολογίζει και εκτυπώνει την περιοχή ενός κύκλου χρησιμοποιώντας μια συνάρτηση που ορίζεται στο προηγούμενο αρχείο με το όνομα 'circle.h'. Ας αναλύσουμε τον κώδικα:

#include 'circle.h'

Αυτή η γραμμή περιλαμβάνει το περιεχόμενο του αρχείου κεφαλίδας 'circle.h' στο πρόγραμμα. Το αρχείο κεφαλίδας πιθανότατα περιέχει τις δηλώσεις συναρτήσεων ή τις μακροεντολές που σχετίζονται με υπολογισμούς κύκλων.

ενθ κύριος ( ) {

Η εκτέλεση του προγράμματος ξεκινά με την κύρια λειτουργία, το σημείο εισόδου για τα προγράμματα C.

διπλό rads = 5.0 ;

Μια μεταβλητή rads τύπου double δηλώνεται και εκχωρείται με την τιμή 5,0. Αυτή η μεταβλητή πιθανότατα αντιπροσωπεύει την ακτίνα του κύκλου.

διπλό περιοχή = Circle_CArea ( rads ) ;

Μια συνάρτηση με το όνομα 'Circle_Carea' καλείται με όρισμα τα radius rads και το αποτέλεσμα αποθηκεύεται στη μεταβλητή περιοχή.

printf ( «Το εμβαδόν του κύκλου είναι: %.2στ \n ' , περιοχή ) ;

Το αποτέλεσμα εκτυπώνεται στην κονσόλα χρησιμοποιώντας το 'printf'. Η συμβολοσειρά 'Η περιοχή του κύκλου είναι: %.2f\n' είναι μια συμβολοσειρά μορφής με σύμβολο κράτησης θέσης '%f' για την τιμή της περιοχής. Το '.2' στο '%.2f' καθορίζει ότι θα πρέπει να εμφανίζονται μόνο δύο δεκαδικά ψηφία.

ΕΠΙΣΤΡΟΦΗ 0 ;

Η κύρια συνάρτηση ολοκληρώνεται επιστρέφοντας το 0 που υποδεικνύει μια επιτυχημένη εκτέλεση προγράμματος στο λειτουργικό σύστημα.

Συνοπτικά, το αρχείο κεφαλίδας δηλώνει μια συνάρτηση με σύνδεση C και το αρχείο υλοποίησης ορίζει τη λογική για τον υπολογισμό της περιοχής ενός κύκλου. Αυτός ο διαχωρισμός επιτρέπει στον κώδικα να χρησιμοποιηθεί και στα προγράμματα C και C++. Ανατρέξτε στην έξοδο του κώδικα που δίνεται στην παρακάτω εικόνα:

Όπως μπορείτε να δείτε στην έξοδο, το υπολογισμένο εμβαδόν του κύκλου είναι 78,54 που είναι ο υπολογισμός του εμβαδού = 3,14*5*5 = 78,54. Η συνάρτηση για τον υπολογισμό της περιοχής ορίζεται στο αρχείο κεφαλίδας 'circle.h', το οποίο στη συνέχεια καλείται στο αρχείο C++ με τη βοήθεια του εξωτερικού 'C'.

συμπέρασμα

Σας καθοδηγήσαμε στη διαδικασία ενσωμάτωσης της C++ στα προγράμματά σας C σε αυτόν τον οδηγό. Η ενσωμάτωση μιας λειτουργικότητας C++ σε βάσεις κωδικών C απαιτεί προσεκτική εξέταση των δεικτών, της παραποίησης ονομάτων και των αρχείων κεφαλίδων διπλής χρήσης. Τα παραδείγματα που παρέχονται απεικονίζουν μια πρακτική προσέγγιση για την επίτευξη αυτής της ολοκλήρωσης. Τώρα που είδατε πώς να συνδέσετε αυτές τις δύο γλώσσες προγραμματισμού, έχετε περισσότερα εργαλεία. Το ξεκλείδωμα της ισχύος της C++ ενώ εργάζεστε με το C θα μπορούσε να δώσει στα έργα σας ένα εντελώς νέο επίπεδο λειτουργικότητας.