Я пытаюсь понять некоторый код C++, который я наткнулся на Интернет. Это была демонстрация flex от NVIDIA с потрясающим новым симулятором жидкости, и поэтому я немного заглянул в код. Там я видел то, чего не понял: в сцене был класс под названием «Сцена». Он не включал, но он использовал функцию CreateRandomConvex из файла helpers.h. Оба они были включены только в main.cpp, но не использовали ни один из них. Итак, теперь мой вопрос: как класс Scene может получить доступ к функции помощников без его включения? И как компилятор знает, где он может получить функцию CreateRandomConvex, если нет класса Scene?Понимание #includes C++
Код: главная:
#include "B.h"
#include "A.h"
int main()
{
}
Ач (Scene)
#pragma once
class Scene
{
void Init()
{
CreateRandomConvex();
}
};
Bh: (хелперы)
#pragma once
void CreateRandomConvex()
{
//calc some stuff
}
В качестве побочного примечания при компиляции с предварительно скомпилированными заголовками вы всегда можете зависеть от того, что все, что является частью предварительно скомпилированного заголовка, будет включено перед любым другим заголовком. –
Итак, включение не означает: если вы чего-то не знаете, посмотрите на него. Но, скорее: все, что там написано, должно быть написано здесь – Dynamitos
@ Dynamitos Точно. – molbdnilo