Вы уточнили, что:
[В заголовке нет] шаблонов / встроенных функций ... нет деталей реализации функций.
Вообще говоря, нет, добавление файла заголовка не повлияет на размер программы.
Вы можете проверить это. Возьмите программу, которая уже собирается, и проверьте размер исполняемого файла. Затем перейдите в каждый файл .cpp и включите стандартный заголовочный файл C или C ++, который на самом деле не нужен в этом файле. Создайте программу и снова проверьте размер исполняемого файла - он должен быть того же размера, что и раньше.
В общем, единственное, что влияет на размер исполняемого файла, - это то, что заставляет компилятор генерировать различное количество кода, инициализации глобальных / статических переменных или использование DLL / общих библиотек. И даже тогда, если какие-либо из этих элементов не нужны для работы программы, большинство современных компоновщиков откажутся от этих вещей.
Таким образом, включая заголовочные файлы, которые содержат только такие вещи, как прототипы функций, определения классов / структур без строк и определения перечислений, ничего не должно измениться.
Однако, безусловно, есть исключения. Вот несколько.
Во-первых, если у вас неискушенный компоновщик Затем, если вы добавите заголовочный файл, который генерирует вещи, которые на самом деле не нужны программе, и компоновщик не выбрасывает их, размер исполняемого файла будет увеличиваться. (Некоторые люди сознательно создают линкеры таким образом, потому что время линковки может стать безумно быстрым.)
Много раз, добавление заголовочного файла, который добавляет или изменяет определение символа препроцессора, будет изменять то, что генерирует компилятор. Например, assert.h (или cassert) определяет макрос assert (). Если вы включите файл заголовка в файл .c / .cpp, который изменяет определение символа препроцессора NDEBUG, он изменит, генерирует ли использование assert () какой-либо код, и, таким образом, изменит размер исполняемого файла.
Кроме того, добавление заголовочного файла, который изменяет параметры компилятора, изменит размер исполняемого файла. Например, многие компиляторы позволяют изменять стандартную «упаковку» структур с помощью строки типа # pragma pack . Поэтому, если вы добавите заголовочный файл, который изменяет структуру структуры в файле .c / .cpp, компилятор сгенерирует другой код для работы со структурами и, следовательно, изменит размер исполняемого файла.
И, как заметил кто-то другой, когда вы имеете дело с Visual C ++ / Visual Studio, все ставки отменены. Скажем так, у Microsoft есть уникальный взгляд на инструменты разработки, который не разделяют люди, пишущие системы компиляции на других платформах.