理解#includes C++
Understanding #includes c++
我正在尝试理解我在 Internet 上偶然发现的一些 C++ 代码。这是来自 NVIDIA 的 flex 演示,带有令人敬畏的新流体模拟,所以我浏览了一下代码。在那里,我看到了一些我不明白的东西:scene.h 中有一个名为 Scene 的 class。它没有包含,但它使用了 helpers.h 文件中的 CreateRandomConvex 函数。它们都只包含在 main.cpp 中,但它没有使用它们中的任何一个。
所以我现在的问题是:Scene class 如何在不包含 helpers 函数的情况下访问它?如果场景 class 没有包含,编译器如何知道他可以从哪里获得 CreateRandomConvex 函数?
代码:
主要:
#include "B.h"
#include "A.h"
int main()
{
}
A.h:(场景)
#pragma once
class Scene
{
void Init()
{
CreateRandomConvex();
}
};
B.h:(帮手)
#pragma once
void CreateRandomConvex()
{
//calc some stuff
}
要在 CPP 文件中包含 A.h
,您必须事先在该 CPP 文件中包含文件 B.h
。
可以说这是不好的做法。但它有效。
#include "A.h"
字面意思是“在此处插入文件"A.h"的内容”。
所以在编译主文件的时候,编译器看到
void CreateRandomConvex()
{
//calc some stuff
}
class Scene
{
void Init()
{
CreateRandomConvex();
}
};
int main()
{
}
附带说明一下,让一个 header 依赖于另一个已经包含在内并不是一个很好的做法。
我正在尝试理解我在 Internet 上偶然发现的一些 C++ 代码。这是来自 NVIDIA 的 flex 演示,带有令人敬畏的新流体模拟,所以我浏览了一下代码。在那里,我看到了一些我不明白的东西:scene.h 中有一个名为 Scene 的 class。它没有包含,但它使用了 helpers.h 文件中的 CreateRandomConvex 函数。它们都只包含在 main.cpp 中,但它没有使用它们中的任何一个。 所以我现在的问题是:Scene class 如何在不包含 helpers 函数的情况下访问它?如果场景 class 没有包含,编译器如何知道他可以从哪里获得 CreateRandomConvex 函数?
代码: 主要:
#include "B.h"
#include "A.h"
int main()
{
}
A.h:(场景)
#pragma once
class Scene
{
void Init()
{
CreateRandomConvex();
}
};
B.h:(帮手)
#pragma once
void CreateRandomConvex()
{
//calc some stuff
}
要在 CPP 文件中包含 A.h
,您必须事先在该 CPP 文件中包含文件 B.h
。
可以说这是不好的做法。但它有效。
#include "A.h"
字面意思是“在此处插入文件"A.h"的内容”。
所以在编译主文件的时候,编译器看到
void CreateRandomConvex()
{
//calc some stuff
}
class Scene
{
void Init()
{
CreateRandomConvex();
}
};
int main()
{
}
附带说明一下,让一个 header 依赖于另一个已经包含在内并不是一个很好的做法。