理解#includes c ++

时间:2016-01-23 12:42:05

标签: c++ include

我试图了解一些我在互联网上偶然发现的c ++代码。这是NVIDIA的灵活演示,带有令人敬畏的新流体模拟,因此我对代码进行了一些调查。在那里,我看到了一些我不明白的东西:在scene.h中有一个名为Scene的类。它没有包含,但它使用了helpers.h文件中的CreateRandomConvex函数。它们都只包含在main.cpp中,但没有使用它们中的任何一个。 所以现在我的问题是:如何在不包含它的情况下访问助手功能?如果Scene类没有包含,编译器如何知道他可以从哪里获取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
}

2 个答案:

答案 0 :(得分:1)

#include "A.h"字面意思是“插入文件的内容”A.h“here”。

因此,在编译主文件时,编译器会看到

void CreateRandomConvex()
{
    //calc some stuff
}

class Scene
{
    void Init()
    {
        CreateRandomConvex();
    }
};

int main()
{

}

作为旁注,有一个标题取决于另一个已经包含的标题,这不是一个很好的做法。

答案 1 :(得分:0)

要将A.h包含在CPP文件中,您必须事先在该CPP文件中包含文件B.h

可以说这是不好的做法。但它确实有效。