理解#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 依赖于另一个已经包含在内并不是一个很好的做法。