Возможный дубликат:
Что такое "единица перевода" на С++
Часто говорят, что статические переменные, объявленные в C/С++, не отображаются во всех единицах компиляции? Означает ли это, что каждый .c или .cpp файл является отдельным модулем компиляции? Как насчет файла a, h и статических переменных, объявленных в файле .h? Файл .h также рассматривается как отдельный блок компиляции?