gpt4 book ai didi

c++ - 在c++中包含头文件

转载 作者:太空宇宙 更新时间:2023-11-04 11:53:29 25 4
gpt4 key购买 nike

我的 C++ Premier 并没有说明我要问的内容,这就是我通过谷歌搜索得到的内容 LINK :

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

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

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

最佳答案

警告:非常糟糕的代码:

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知道a.h中的define。如果您忘记了 #include "a.h",或者将其放在下方 #include "b.h",这将中断。

但是,作为一般规则,您应该在任何需要的文件中显式#include header 。这样你就知道你只关心 main 中的 foo,所以你只需要 #include foo header ,这是b.h:

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

关于c++ - 在c++中包含头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17090147/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com