首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >include中的include的范围是什么?

include中的include的范围是什么?
EN

Stack Overflow用户
提问于 2012-08-14 01:49:22
回答 3查看 1.1K关注 0票数 0

我不太确定会发生什么,但请看以下几点:

代码语言:javascript
复制
class A{

}

-

代码语言:javascript
复制
class B{
 #include "A.h"
}

-

代码语言:javascript
复制
class C{
 #include "B.h"
}

现在,如果我在C类中编写代码,是不是意味着A类也会自动包括在内?据我所知,#include基本上直接复制了整个文件。

有没有人能详细说明一下?

我正在尝试尽可能多地使用类转发。但有时我就是做不到。

编辑:

上面的类不在同一个文件中。想象一下他们分开了。

编辑II:让我把它放在更多的上下文中。

假设我正在创建一个包含类B的新类,但是我声明了一个类型为A的变量。这似乎是编译的,尽管我从未将A包含到类中。在C++中是这样的吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-14 01:52:32

这基本上会在类B中声明一个名为A的嵌套类

include指令应该位于文件顶部以外的其他位置的情况非常少见,而且通常具有与您所拥有的完全不同的用途。

如果我正确理解了您的文件层次结构,它等同于:

代码语言:javascript
复制
//A.h
class A{

};

//B.h
class B{
  class A{

  };
};

//C.h
class C{
  class B{
    class A{

    };
  };
};
票数 2
EN

Stack Overflow用户

发布于 2012-08-14 01:52:58

您说得对,预处理器只是将头文件复制进去。如果你愿意,可以把它想象成一个长宏。

票数 1
EN

Stack Overflow用户

发布于 2012-08-14 01:57:04

#include指令只是告诉编译器假装指定文件中的文本是在#include指令出现的地方编写的。它与作用域、语法或任何其他内容无关。它只是简单的文本。

如果看不到A.h和B.h的内容,就不可能进一步说明这些#include指令的作用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11939543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档