עזרה בC

Orbi

New member
עזרה בC

שלום לכולם, עשיתי קובץ header שבו אני מגדיר כמה טיפוסי משתנים וכן מאתחל שני struct, את הקובץ הנ"ל אני מכליל בשני קבצי source מה שגורם לקומפיילר לזעוק (בצדק) שהמשתנים מוגדרים כבר במקום אחר. אני זוכר שאפשר להשתמש בפקודה #ifndef אבל אני זוכר שזה היה רק לשורה ספציפית, השאלה שלי איך אני דואג לכך שכל אובייקט בקובץ header שלי יוכלל רק פעם אחת. תודה מראש.
 

selalerer

New member
בכדי לכלול את כל הקוד בifndef פשוט

תשים את הifndef בתחילת הקובץ ואת הendif בסופו.
#ifndef MY_FILE_H #define MY_FILE_H //!!!! המון קוד //!!!! המון קוד //!!!! המון קוד //!!!! המון קוד //!!!! המון קוד //!!!! המון קוד //!!!! המון קוד //!!!! המון קוד //!!!! המון קוד //!!!! המון קוד #endif​
 

Orbi

New member
ביקרתי בקישור ובתשובה השנייה

אבל זה עדיין נותן את אותם errors מצורף הקובץ (במקור הוא .h) נ.ב הerrors לדוגמא: set.obj : error LNK2005: _cmd already defined in main.obj set.obj : error LNK2005: _sets already defined in main.obj main.obj : error LNK2001: unresolved external symbol _print_set
 

J u s t y

New member
הערה קטנה

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