在c ++中包含头文件

时间:2013-06-13 14:50:07

标签: c++ include

C ++ Premier我没有多说我要问的内容,这就是我用谷歌搜索LINK

当编译器编译#include“example.h”行时,它会将example.h的内容复制到当前文件中。

所以,如果这是真的,在下面的例子中为什么B.h不知道A.h?它是如何编译文件的?我是否必须在每个使用它的文件中包含A.h,然后在program.h中包含使用这些文件的每个文件?

In program.h
#include "A.h"
#include "B.h"

1 个答案:

答案 0 :(得分:1)

警告:非常糟糕的代码:

a.h

#ifndef A_H
#define A_H

#define SOME_LIT "string lit in A.h"

#endif

b.h

#ifndef B_H
#define B_H

#include <iostream>

void foo() { std::cout << SOME_LIT << '\n'; }

#endif

main.cpp

#include "a.h"
#include "b.h"

int main()
{
    foo();
}

打印:

$ ./a.out 
string lit in A.h

因此,您可以看到b.h了解define中的a.h。如果您忘记了#include "a.h",或将其置于 #include "b.h"下方,则会中断。

但是,作为一般规则,您应该在您需要的任何文件中明确#include标题。这样您知道自己只关心foo中的main,因此只需#include foo标题b.h

#include "b.h"
int main()
{
    foo();
}