לא כמה משתנים בכמה קבצים האדר שונים.אם ככה - למה ציפית?
כל קובץ C שמבצע include ל-h file הרי רושם בתחילת הקובץ (או לאן שההאדר מועתק) את האתחול (בין היתר, וכי אתחלת ולא רק הצהרת) של המשתנה הגלובאלי.
כלומר יש לך כמה קבצי Obj שמכילים אותו משתנה גלובאלי.
יש לך לכן 2 אופציות:
1. שהמשתנים יהיו סטטיים ואז יש אינסטנס יחיד לכל Obj (לא משתפים ערכים)
2. להעביר את המשתנה הגלובאלי לאחד קבצי ה-C ולשתף אותו בין האינסטנסים באמצעות extern.
יש גם אפשרות שזה יהיה בהאדר ובאמצעות ifndef לקבוע אחד שהוא הצהרה והשאר extern-ים.
משהו כזה -
#ifdef LOL
int lol = 3;
#else
extern int lol;
#endif
ולפני ההאדר של אחד (!) מקבצי ה-C להגדיר #define LOL
בברכה,
עידן