Для майбутніх глядачів цього питання хочу зазначити, що вам слід уникати того, що пропонує monkey0506 .
Файли заголовків призначені для декларацій.
Файли заголовків збираються один раз для кожного .cpp
файлу, який безпосередньо або опосередковано #includes
їх, а код поза будь-якою функцією запускається при ініціалізації програми, перш ніжmain()
.
Поклавши: foo::i = VALUE;
у заголовок, foo:i
буде присвоєно значення VALUE
(що б там не було) для кожного .cpp
файлу, і ці призначення будуть відбуватися у невизначеному порядку (визначеному лінкером) перед main()
запуском.
Що робити, якщо ми маємо #define VALUE
інше число в одному з наших .cpp
файлів? Це складеться чудово, і ми не зможемо знати, хто з них виграє, поки ми не запустимо програму.
Ніколи не виконуваний код в заголовок з тієї ж причини , що ви ніколи #include
в .cpp
файл.
включіть охоронці (які, я погоджуюся, ви завжди повинні використовувати) захищають вас від чогось іншого: той самий заголовок непрямо #include
d кілька разів під час компіляції одного .cpp
файлу