התקשר ל-C++ מ-C

Htqsr L C M 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, הצהרת 'C' החיצונית היא קריטית. כאשר מוחל על פונקציות C++, הוא מבטיח ששמות הפונקציות יטופלו בסגנון C (באמצעות C-linkage) במהלך תהליך ההידור. 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

חיצוני 'ג' {

לְהַכפִּיל calculate_CArea ( לְהַכפִּיל rad ) ;

}

#endif

לְהַכפִּיל Circle_CArea ( לְהַכפִּיל rad ) {

לַחֲזוֹר 3.14159 * rad * rad ;

}

בואו נפרק כל חלק:



#ifndef CIRCLE_AREA ו-#define CIRCLE_AREA

שורות אלו הן חלק מ-include guards אשר מבטיח כי תוכן קובץ הכותרת נכלל רק פעם אחת בתהליך הקומפילציה. אם CIRCLE_AREA לא מוגדר, הקוד הבא ייכלל ו-CIRCLE_AREA יוגדר.

חיצוני 'ג'

תחביר זה משמש להכרזה שלפונקציה הבאה יש קישור C. זה חיוני בעת כתיבת קוד שייקרא גם מ-C וגם מ-C++.

לְהַכפִּיל calculate_CArea ( לְהַכפִּיל rad ) ;

שורה זו מכריזה על פונקציה בשם 'calculate_Carea' שלוקחת ארגומנט כפול (rad) ומחזירה כפול.

הצהרת 'C' החיצונית בקובץ הכותרת מודיעה למהדר להשתמש בקישור בסגנון C עבור הפונקציה, מה שהופך אותה לניתנת להתקשרות מקוד C. השתמש בקוד זה כדי למצוא את השטח של עיגול על ידי שמירתו בקובץ 'circle.h'. לאחר שתשמור את קובץ הכותרת הזה, כל מה שאתה צריך לעשות הוא לכלול את זה כקובץ כותרת בתוכנית C++ ולבצע את הפונקציה הרצויה. להלן קוד C שמחשב את שטח המעגל. הקובץ 'main.c' כולל את הכותרת C++ וקורא ישירות ל-'Circle_Carea'. ראה את הקוד הבא:

#include 'circle.h'

int רָאשִׁי ( ) {

לְהַכפִּיל rads = 5.0 ;

לְהַכפִּיל אֵזוֹר = Circle_CArea ( rads ) ;

printf ( 'שטח המעגל הוא: %.2f \n ' , אֵזוֹר ) ;

לַחֲזוֹר 0 ;

}

תוכנית C פשוטה זו מחשבת ומדפיסה שטח של עיגול באמצעות פונקציה המוגדרת בקובץ הקודם בשם 'circle.h'. בואו נפרק את הקוד:

#include 'circle.h'

שורה זו כוללת את התוכן של קובץ הכותרת 'circle.h' בתוכנית. קובץ הכותרת מכיל כנראה את הצהרות הפונקציות או פקודות המאקרו הקשורות לחישובי מעגל.

int רָאשִׁי ( ) {

הפעלת התוכנית מתחילה בפונקציה הראשית, נקודת הכניסה לתוכניות C.

לְהַכפִּיל rads = 5.0 ;

משתנה rads מסוג double מוכרז ומוקצה עם הערך של 5.0. משתנה זה מייצג כנראה את רדיוס המעגל.

לְהַכפִּיל אֵזוֹר = Circle_CArea ( rads ) ;

פונקציה בשם 'Circle_Carea' נקראת עם הרדיוס rads כארגומנט והתוצאה מאוחסנת באזור המשתנה.

printf ( 'שטח המעגל הוא: %.2f \n ' , אֵזוֹר ) ;

התוצאה מודפסת למסוף באמצעות 'printf'. המחרוזת 'השטח של המעגל הוא: %.2f\n' היא מחרוזת פורמט עם מציין מיקום '%f' עבור ערך השטח. ה-'.2' ב-%2f מציין שיש להציג רק שני מקומות עשרוניים.

לַחֲזוֹר 0 ;

הפונקציה הראשית מסתיימת בהחזרת 0 המצביע על ביצוע מוצלח של תוכנית למערכת ההפעלה.

לסיכום, קובץ ה-header מצהיר על פונקציה עם קישור C, וקובץ היישום מגדיר את ההיגיון לחישוב שטח המעגל. הפרדה זו מאפשרת שימוש בקוד גם בתוכנות C וגם ב-C++. עיין בפלט של הקוד המופיע בתמונה הבאה:

כפי שניתן לראות בפלט, השטח המחושב של המעגל הוא 78.54 שזהו חישוב השטח = 3.14*5*5 = 78.54. הפונקציה לחישוב השטח מוגדרת בקובץ הכותרת 'circle.h' שנקרא אז בקובץ C++ בעזרת 'C' חיצוני.

סיכום

הדרכנו אותך בתהליך של שילוב C++ בתוכניות C שלך במדריך זה. שילוב של פונקציונליות C++ בבסיסי קוד C מצריך התייחסות מדוקדקת של מצביעים, שיבוש שמות וקובצי כותרות דו-תכליתיים. הדוגמאות שסופקו ממחישות גישה מעשית להשגת אינטגרציה זו. כעת, לאחר שראית כיצד לחבר את שתי שפות התכנות הללו, יש לך עוד כלים. פתיחת העוצמה של C++ תוך כדי עבודה עם C יכולה להעניק לפרויקטים שלך רמה חדשה לגמרי של פונקציונליות.