שילוב קבצים / ספריות
התשובה מתחלקת לשני חלקים: החלק העקרוני והחלק המעשי. באופן עקרוני: ניתן לשלב כמה וכמה קבצים בשפת c או c++. עושים זאת כך: א. קובץ "עיקרי" ובו הפונקציה הראשית הנקראת main. הפונקציה קוראת לפונקציות אחרות שנמצאות בקובץ הזה או בקבצים אחרים. ב. לכל קובץ ובו הגדרת פונקציות, צריך להכתב קובץ ובו הצהרה על הפונקציות. קובץ זה הוא בעל סיות h. בדרך כלל. ג. כאשר משתמשים בפונקציה מקובץ חיצוני, מכלילים את קובץ ההצהרה (או קובץ הכותרת) ד. גם בקובץ הספריה מכלילים את קובץ ההצהרה. ולדוגמה מעשית:
Main.cpp: ----- ----- #include <iostream.h> #include "floatlib.h" main() { f = getfloat(); cout << "Value of float = " << f; } ----------------------------- floatlib.h : ----- ----- #ifndef GETFLOAT_LIB #define GETFLOAT_LIB float getfloat(); #endif ----------------------------- floatlib.cpp : ----- ----- #include floatlib.h #include <stream.hpp> float getfloat() { { float x; cout << "Enter floating point value: "; cin >> x; return x; }
ועכשיו - לחלק המעשי: כאשר בונים פרוייקט ב-devcpp, מתחילים עם פתיחת פרוייקט חדש, בוחרים את סוג הפרוייקט ונותנים לפרוייקט שם. לפרוייקט מוסיפים את שלושת הקבצים הנ"ל, ומבצעים את הפעולה build all (בתפריט compile) שם קובץ ההרצה הנוצר הוא שם הפרוייקט בסיומת exe. אני מקווה שההסבר מספיק מובן. אם שמת לב, לא השתמשתי במשתנים גלובליים. לא מומלץ להשתמש בהם אלא אם כן אין לך שום אפשרות אחרת (אפשרויות אחרות הן: העברת פרמטרים by refernce - זאת אומרת שמה שאתה מעביר זה בעצם את הכתובת שלהם, ואם משנים אותם בפונקציה, הם משתנים גם בתוכנית המקורית שהעבירה אותם. אפשר גם להשתמש בפונקציה שמחזירה ערך, כמו שהראתי בדוגמה למעלה. יש עוד סוג של משתנה מסוג static שהוא משתנה המוכר רק בפונקציה בו הוא מוגדר, אך הוא שומר על ערכו בין הכניסות לפונקציה.)