17

חלוקת תכנית לקבצים ותהליך הקומפילציה

17.1 מוטיבציה

עת התכניות שאנו כותבים גדלות קורה לא אחת שאנו מעוניינים לחלק את התכנית לכמה קבצים שיקומפלו יחד לכדי תכנית אחת שלמה (לעתים נאמר: לכדי אפליקציה אחת). סיבות שונות מביאות אותנו לחלוקת התכנית לכמה קבצים:

א. מתכנתים שונים יכולים לעבוד במקביל על חלקים שונים בתכנית; כל חלק ייכתב בקובץ נפרד.

ב. פונ' אשר מבצעות משימה דומה (למשל פונ' המבצעות משימות מתמטיות שונות בתכניתנו) יושמו בקובץ יחיד. עת נזדקק גם בתכנית אחרת למשימות אלה, נוכל לשלב את הקובץ בַתכנית האחרת בנקל (בלי שנצטרך לבצע 'העתק\הדבק' מקובץ לקובץ לַפונ' הדרושות לנו).

ג. עת מתגלית שגיאה בחלק כלשהו של התכנית, או עת אנו רוצים לשנות חלק כלשהו בתכנית איננו צריכים לקמפל את כל התכנית (דבר שעלול לקחת זמן רב אם התכנית כוללת אלפים רבים של שורות קוד), אלא אנו מקמפלים (במובן הצר והמדויק של המילה) רק את הקובץ שמכיל את הקוד שהשתנה, ואחר אנו כורכים (עושים linking) לכלל הקבצים המקומפלים (אלה שלא שונו, וזה ששונה) לכדי תכנית שלמה חדשה.

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

17.1 התכנית שנחלק.pdf

17.2 חלוקת תכנית לקבצים - חלק ב': הקבצים המרכיבים את התכנית, וקימפולה (כולל באמצעות פקודת ה: make)

הסרטון המתאר את השימוש בפקודת ה: make מופיע בסעיף 17.5

17.2 הידור התכנית בדרכים שונות.pdf

17.3 קובצי כותר (header)

17.3 קובצי כותר.pdf

הסבר כללי אודות פעולת ה: include

17.3a include.pdf

17.4 קומפילציה בחלקים של תכנית המורכבת ממספר קבצים, כולל קובצי header

17.5 קומפילציה של תכנית המורכבת ממספר קבצים תוך שימוש בפקודה make (ובקובץ makefile)

17.6 הנחיית המהדר (compiler directive): שהינה: define#

א' פעולת ה: define להגדרת קבועים


ב': פעולת ה: define להגדרת מאקרו


17.7 define.pdf

17.7 הנחיית המהדר (compiler directive): שהינה: ifdef#

א': הסבר אודות ifdef


ב': הסבר אודות ifdef


17.7 ifdef.pdf

17.8 כתיבת תכנית המורכבת מכמה קבצים, ועושה שימוש בכמה struct-ים

בדוגמה זאת אציג תכנית העושה שימוש בנקודות, ובמלבנים שצלעותיהם מקבילות לצירים.

על כן התכנית תכלול את הקבצים:

  • קובץ header וקובץ מימוש פונ' ל: struct Point
  • קובץ header וקובץ מימוש פונ' ל: struct Rectangle
  • קובץ לתכנית הראשית שתגדיר ותשתמש בנקודות ובמלבנים.

כמו כן, מלבן נגדיר באמצעות שתי נקודות (פינה שמאלית עליונה, ופינה ימנית תחתונה), ולכן גם הקוד של מלבן עושה שימוש בקוד של נקודה.

נראה את הקבצים הדרושים, את הבעיה שמתעוררת, ואת פתרונה.

הקבצים Point.h, Point.cc, Rect.h, Rect.cc

א': קובץ ה: header וקובץ ה: cc עבור נקודות


ב': קובץ ה: header וקובץ ה: cc עבור מלבנים


17.8 - קובצי הנקודות והמלבנים.pdf

קובץ התכנית הראשית ובעיית ההכללה הכפולה

17.8 - התכנית הראשית ובעיית הכללה ככפולה.pdf

קובץ התכנית הראשית, ופתרון בעיית ההכללה הכפולה בעזרת ifndef

17.8 - התכנית הראשית ופתרון בעיית הכללה ככפולה.pdf

17.9 קבועים גלובליים

17.9.pdf

17.10 מבוא לתכנות מונחה עצמים - עקרון הכימוס

17.10.pdf

17.11 ספריה סטטית

17.11.pdf

17.12 ספריה דינאמית

17.12.pdf