【问题标题】:compiling c++ program on windows在windows上编译c++程序
【发布时间】:2010-11-14 15:29:13
【问题描述】:

我正在 VS 2005 上编译 C++。 何时以及为什么使用#include 以及何时以及为什么使用预先声明为class XXXX? 使用每个选项有什么好处?首选哪个选项?

我也很高兴有一个关于编译的好教程。

【问题讨论】:

  • 通常我会说这闻起来像家庭作业......但是什么类不会解释头文件?
  • 您的要求并不完全清楚。或许可以添加一些示例代码。

标签: c++ windows compilation


【解决方案1】:

尽可能总是倾向于前向声明。对引用的类文件的更改不会触发重新编译 cpp 文件,包括使用预先声明的类的类。这减少了一点依赖。

在您有效使用 XXXX 类的每个地方,您都必须包含该标题。如果您从类 XXXX 派生,则还必须包含标题。

【讨论】:

  • 那么,我怎样才能只声明类而不包含它呢?为什么编译器不会调用错误?
  • @Roman 您应该阅读一些有关包含如何工作的内容。它们只是纯文本复制粘贴。
  • 只需在声明中使用class XXXX; 的位置前添加。这仅适用于您“使用”它作为原型或成员中的引用或指针的地方。在实际使用的情况下,您将需要一个所谓的完整类型。然后你绝对需要包含适当的标题。
【解决方案2】:

头文件用于包含在单独的编译单元中定义的实体的声明。如果您没有头文件,则必须在每个编译单元中输入此类声明(这实际上是 #include 为您所做的,它会在文件中的该点插入包含的文本,但是如果您没有使用一个标头,您必须多次执行此操作,并且在代码更改时容易出错且难以维护。

您可以直接在 .cpp 文件中使用声明,例如,如果所定义的符号只在该编译单元中使用过,因此不需要全局可见性。在数据声明的情况下,您通常还将它们声明为静态,以将它们的范围限制在编译单元内。

【讨论】:

  • 第二段对我来说不是很清楚,你能解释一下并补充信息吗?
  • @Roman:嗯,我仍然不清楚你最初的问题。在我更清楚地了解您的要求之前,不值得扩展。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-29
相关资源
最近更新 更多