Я сейчас играю с Box2D для развлечения, и после ознакомления с некоторыми из концепций я решил провести собственный тест для тестового стенда (Box2D поставляется с набором примеров и имеет простой расширяемый тест класс для создания собственных тестов). Я начал с того, что взял один из других тестов, вырвал все, кроме сигнатур функций, и вставил часть своего собственного кода.
Тем не менее, нет #include для какой-либо из библиотек Box2D, поэтому он не компилируется (только ошибки моего файла, удалите мой тестовый файл, и он прекрасно скомпилируется). Я подумал, что случайно удалил их, когда перемещал вещи, но после проверки других тестовых файлов нигде не было видно включений. Каждый из файлов использует структуры данных и функции, которые объявлены в различных заголовочных файлах Box2D. Как это компилируется вообще?
Например, это один из предварительно упакованных тестов без тела конструктора и несколько комментариев вверху:
#ifndef CHAIN_H
#define CHAIN_H
class Chain : public Test
{
public:
Chain()
{
// Since b2BodyDef isn't defined in this file, and no
// other files are included how does this even compile?
b2BodyDef bd;
// rest of constructor...
}
static Test* Create()
{
return new Chain;
}
};
#endif