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

long Sum(int a);
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

אותה הכרזה, לאותה פונקציה, בתוכנית C++ נראית כך:

extern "C" long Sum(int a);
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

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

extern "C"
{
 long Sum(int a);
 long Prod(int a);
}
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

או שניתן למקם את כל ההכרזות ב-include, כמו כאן:

extern "C"
{
 #include "employee.h"
}
העבר את העכבר על שורות הקוד בכדי לקבל הסבר מפורט

לגבי קריאה לפונקציות מספריות סטנדרטיות, כמו strcpy או printf, אינך צריך להוסיף דבר. קבצי header סטנדרטים כבר מכילים את התוספת extern C היכן שנדרש.
כדאי לדעת דבר אחד נוסף. במקרה ושכחת את התוספת extern C בהכרזת הפונקציה, ודאי תקבל הודעת שגיאה שעלולה להטעות. אמנם לא תקבל הודעת שגיאה מהמהדר, אך סביר שתקבל הודעת שגיאה מהמקשר
(linker) האומרת שהפונקציה עליה הכרזת אינה קיימת, וזאת מכיוון שהמקשר יחפש פונקצית ++C וכל מה שימצא זו גרסת C שלא בה רצית להשתמש, לפי מיטב הבנתו.