4

我最近开始学习 C++,并且来自 Ruby 环境,我发现很难以仍然正确编译的方式构建项目,我一直在使用 Code::Blocks,这非常棒,但缺点是当我添加一个新的头文件或 c++ 源文件,它会生成一些代码,即使它只有 3 或 4 行,我不知道这些行是做什么的。首先我想问这个问题:

这些线有什么作用?

#ifndef TEXTGAME_H_INCLUDED
#define TEXTGAME_H_INCLUDED

#endif // TEXTGAME_H_INCLUDED

我的第二个问题是,我是否需要同时 #include .h 文件和 .cpp 文件,以及按什么顺序。

我的第三个问题是,我在哪里可以找到与 Code::Blocks 一起打包的 GNU GCC 编译器,以及如何在没有 Code::Blocks 的情况下使用它?我宁愿以记事本++的方式开发,因为这是我在 Ruby 中习惯的方式,但是由于 C++ 是编译的,您可能会有不同的想法(也请就此提供建议和意见)

提前谢谢,嗯。

编辑:我在 Windows XP 上,感谢您的快速回复!

4

4 回答 4

3

这是一个包含保护,以防止 .h 文件被包含两次。除了节省时间之外,实际上通常需要这样做以避免重复定义事物。

您应该只包括 .h。.c 文件将以某种形式链接到您的程序。对于小型程序,您可以将所有 .c 文件传递​​给 gcc,但较大的程序将涉及中间 .o 文件甚至库(静态动态)。

您绝对可以在没有 IDE 的情况下工作。在 Windows 上安装 gcc 编译器的方法有很多,包括CygwinMinGW。我认为 Code::Blocks 带有 gcc 可执行文件是正确的,但我不知道它在哪里或什么版本。

于 2010-04-25T11:50:03.333 回答
3

要回答您的问题:

  • 线路包括警卫。它们防止在任何给定的翻译单元中多次包含头文件。如果它被多次包含,您可能会得到多个定义错误。

  • 头文件 #included 包含在 .cpp 文件和其他头文件中。.cpp 文件通常不#included。

  • Code::Blocks 自带的 C++ 编译器叫做 MinGW GCC,可以在 MinGW 安装的 bin 目录下找到。要找到它,请通过资源管理器在 Windows 中搜索“g++”。要使用它,您需要将它所在的目录放在搜索路径中。请注意 Code::Blocks 附带的编译器版本相当旧 - 您可以从这里获得更新的版本。

于 2010-04-25T11:51:36.643 回答
1

这些行使得如果一个文件被#included 两次,一切都将继续工作。这反过来又让您将头文件依赖关系视为一个简单的有向图,这绝对是最简单的。

你不#include .cpp 文件。(好吧,除非你是一个邪恶的程序员。不要这样做!)

我会让其他人(或谷歌!)告诉你有关 gcc 的信息,但如果你要描述你正在使用的平台,它可能会有所帮助。

于 2010-04-25T11:52:32.807 回答
-1

您的所有问题都已被其他人回答,除了:

我宁愿以记事本++的方式开发,因为这是我在 Ruby 中习惯的方式,但是由于 C++ 是编译的,您可能会有不同的想法(也请就此提供建议和意见)

我认为这是一个非常糟糕的主意。具有集成调试器、跳转到符号定义、重构功能、分析器、智能感知等功能的成熟 IDE 实际上是任何现实世界项目的必需品。

绝对最好的是带有Visual Assist X **的Visual Studio *。Code::Blocks 相形见绌 ;)


* 如果您在大学学习,通常可以通过 MSDNAA 免费获得;否则有免费的 Visual Studio Express 版本
** 30 天评估期

于 2010-04-25T12:02:24.183 回答