אין פה שום בלבול .
אתה ממציא ויוצר לעצמך בלבול במקום שהוא לא קיים .
הטיפול ב DEFINE וב INCLUDE נעשה ב PREPROCESSOR .זה דבר אחד .הקימפול של קבצי קוד מקור נעשה בקומפיילר .זה דבר נפרד לגמרי .הקישור נעשה בלינקר .זה דבר שלישי ונפרד .זה המודל של שפת C .שאתה בוחר להתעלם ממנו אתה יוצר לעצמך בלבולים שלא קיימים .
ולכן דבר ראשון
ציטוט:
במקור נכתב על ידי dorM
זה קצת מבלבל להבין כיצד הקומפיילר מתייחס לקבצי header ו-source עם הגדרות extern וכו'
|
הקומפיילר לא מתייחס לקבצי HEADER בשום צורה .הוא לא מכיר אותם .הקומפיילר הוא כלי שיכול לקמפל קובץ SOURCE בודד .זה הכל ולא יותר מזה .
דבר שני
מה זה extern ?
בגדול כדי שתוכל להשתמש במשתנה או בפונקציה אתה חייב
להצהיר ( DECLARE ) עליו בקובץ הקוד שלך והוא חייב להיות
מוגדר ( DEFINED ) באחד מקבצי ה OBJ שאתה הולך ללנקג' .
הגדרה של פונקציה זה לכתוב את הקוד שלה ו
הצהרה על פונקציה זה לכתוב את ה PROTOTYPE שלה .לגבי משתנים כשאתה כותב טיפוס ושם משתנה זוהי
הגדרה .ולכן אם אתה רוצה להשתמש בכמה קבצי SOURCE באותו משתנה אתה
לא רוצה לכתוב טיפוס ושם משתנה כי זה יהיה ניסיון להגדיר משתנים חדשים ולא להשתמש באותו משתנה .מה שאתה אמור לעשות זה
להצהיר על משתנה שמוגדר באיזה מקום אחר .זה מה שעושה extern .
מצהיר על שימוש במשתנה שמוגדר השד יודע איפה .
וזה מוביל אותנו לעניין השלישי
ציטוט:
במקור נכתב על ידי dorM
העניין הוא שבכל הקבצים שאני רוצה להשתמש במשתנה pep_id, אני צריך לכלול את קובץ ה-header שאומר שהוא extern.
|
זה טיעון בכיינות פשוט טיפשי .בשפת מוגדר שכדי שקימפול של קובץ SOURCE יצליח כל חייבות להימצא בו הצהרות לכל המשתנים והופונקציות שמוזכרות בו .במקום לעשות INCLUDE ל HEADER אתה יכול גם להעתיק את אותה שורה שוב ושוב אם אתה חושב שזה יותר נוח .....
אתה בוכה על זה שבכל קובץ שאתה רוצה להשתמש בו ב PRINTF אתה צריך לעשות INCLUDE ל STDIO ? אז למה לבכות על זה שבכל קובץ שאתה רוצה להשתמש בו במשתנה PEP_ID צריך לעשות INCLUDE לאיזה קובץ אחר ?
לקראת סיום נאמר שאת המשפט הבא אני פשוט לא מבין
ציטוט:
במקור נכתב על ידי dorM
אם לא הייתי נותן הגדרת extern? הרי זה כביכול נראה שקבצי header נועדו להכיל מידע של extern בכל מקרה, אז למה צריך להגדיר את זה מההתחלה?
|
קבצי H נועדו להכיל טקסט שאתה רוצה לכתוב במספר קבצים כדי לחסוך לך הקלדה .מה זה " מידע של EXTERN " אני ממש לא יודע
ולבסוף
ציטוט:
במקור נכתב על ידי dorM
קראתי הכל :/
|
אולי את כל הדף הזה קראת אבל זה שאתה לא מבין את ההבדל בין CONST לבין DEFINE מראה שהרבה חומר הרבה יותר בסיסי לא קראת .אתה לא מרגיש שהגיע הזמן להשיג ספר בסיסי על C ולקרוא אותו מההתחלה ועד לסוף ? אני בטוח שתוכל למצוא את THE C PROGRAMMING LANGUAGE במקום כזה או אחר .