Header files

InfectedM

New member
Header files

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

HaRmosh

New member
די פשוט -

בקבצי כותרת מקובל לשים הצהרות על טיפוסי משתנים, למשל structs או unions ב-C, והצהרות על פונקציות - כלומר מבנה הפונקציה ללא הגוף. בנוסף, כדי למנוע מצב שבו מוכלל קובץ הכותרת משני מקומות שונים, ותיווצר שגיאת כפילות, מקובל לעטוף את תכולת הקובץ כולו ב-ifndef ו-ifdef. מבלבל ? קבל דוגמה קצרה:
#ifndef __MY_H_FILE__ #define __MY_H_FILE__ struct a { int b; int c; float d; }; void func1(struct a, int); int func2(struct a, struct a, float); #endif​
שאלות ? שרשר לכאן... בהצלחה...
 

InfectedM

New member
אני חושב שהבנתי.

מה מטרת הקו התחתון לפני הכותרת של הקובץ(נתקלתי בו מדי פעם אך לא ייחסתי לו משמעות מיוחדת)? מה הרעיון בלהגדיר את שם הפונקציה אך לא את הגוף שלה? זה לא אמור לשמש כקובץ ש"מכיל" את הפונקציות ואז אני רק מזמן אותן בגוף התכנית שלי? תודה :)
 

HaRmosh

New member
לקו התחתון עצמו אין משמעות,

הייתי יכול לבחור באותה מידה כל שם חוקי אחר ב-C, העיקר להגדיר משהו מסויים שיציין שהקובץ כבר הוכלל קודם. הרעיון בלהגדיר את שם הפונקציה ללא הגוף מונע את הצורך לסדר בקובץ ה-C את הפונקציות "נקראת מעל קוראת", כלומר למנוע את הצורך בלכתוב פונקציה aשנקראת מ-b מעל b, רק כדי ש-b תכיר אותה. מה גם, שלא מקובל לכתוב קוד בקובץ h, רק הצהרות.
 

InfectedM

New member
הבנתי אותך, תודה. עוד משהו

האם יש צורך בקימפול קובץ כזה או שיצירתו ע"י עורך טקסטואלי תספיק?
 

gmorph

New member
קבצי h לא מקומפלים

אין צורך לקמפל אותם אבל תדאג שקובץ ה c המתאים יעשה include לאותה כותרת ושקובץ הc כן יקומפל.
 

annefan

New member
ההפך!!

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