我现在正在玩 Box2D 以获得乐趣,在掌握了一些概念之后,我决定为测试平台进行自己的测试(Box2D 带有一组示例,并且有一个简单的可扩展测试类用于制作你自己的测试)。我首先抓取了其他测试之一,删除了除函数签名之外的所有内容,并插入了一些我自己的代码。
但是,Box2D 的任何库都没有#includes,因此它不会编译(但只有我的文件错误,删除我的测试文件并且它编译得很好)。我想我一定是在移动东西时不小心删除了它们,但是在检查其他测试文件时,任何地方都看不到#includes。每个文件都使用在各种 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