הוא לא נותן שגיאה של המהדר הוא נותן שגיאה של ה linker, שאומרת שה linker מצא את אותו משתנה יותר מפעם אחת. שים לב שהמהדר הוא בעל תמונה ספציפית של קובץ ולכן לא יכול להתריע על טעות כזו ואילו הלינקר הוא בעל תמונה גלובלית. משתנה גלובלי הוא בעל external linkage מה שאומר שמותר לו להיות מוגדר בדיוק פעם אחת בתוכנית. ברגע שאתה שם אותו ב header ומכליל את ה header בקבצים אחרים אז ה header הופך להיות חלק קוד של קבצי cpp שונים שהוא מוכלל בהם, ולכן ה linker מוצא את המשתנה יותר מפעם אחת בתוכנית. אסור להגדיר משתנה גלובלי ב header. שים את המשתנה בקובץ cpp ועל מנת להכליל אותו בקבצים שונים , תצהיר עליו בלבד ב header ע"י
אם הוא עובד עם חלונות, אין עם זה בעיה. אם הוא צריך קוד פורטבילי - שיעבוד עם EXTERN. אני כותב הרבה הרחבות לWTL (שגם ככה זה רק לחלונות) וכך אני יכול לשים הכל בקובץ H במקום ליצור גם קבצי CPP ולדאוג להכליל אותם בפרוייקט. זה פשוט הרבה יותר נוח.