Допустим, вы хотите использовать в main.cpp
некоторые другие переменные, функции, классы или другие идентификаторы, которые вы определили в game.cpp
.
Рекомендуется поместить объявлений того, что вы хотите использовать извне, в заголовочный файл.
Итак, если у вас есть это содержимое game.cpp
(есть два определения функций):
#include <iostream>
namespace mygame {
void a() {
std::cout << "A";
}
int b() {
std::cout << "B";
return 1;
}
}
, и вы хотите использовать b()
в своем main. cpp, затем вы добавляете объявление из b
в заголовок game.hpp
:
#ifndef GAME_HPP
#define GAME_HPP
int b();
#endif
, затем вы включаете этот заголовок в main.cpp
, помещая #include "game.hpp"
поверх main.cpp
и, таким образом, вы можете свободно использовать b()
. Так что main.cpp
может выглядеть так:
#include <iostream>
#include "game.hpp"
int main()
{
std::cout << "MAIN";
mygame::b();
int x = mygame::b(); // remember that b() returns int
}
Обратите внимание, что game.hpp
также содержит некоторые уродливые команды. Они не обязательны для #include
файла как такового, но должны использоваться для защиты от нескольких определений . Чтобы узнать больше, ищите Заголовки
Также будьте осторожны, так как технически вы можете включить исходный файл game.cpp
вместо game.hpp
, но не делайте этого, так как Компилятор покажет вам множество загадочных сообщений. Только не делайте этого, пока не узнаете, как препроцессор + компилятор + компоновщик работают вместе.