【问题标题】:What Should be the Structure of a C++ Project?C++ 项目的结构应该是什么?
【发布时间】:2011-02-12 01:53:26
【问题描述】:

我最近开始学习 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,感谢您的快速回复!

【问题讨论】:

  • 如果您在没有 IDE 的情况下工作,它会为您处理编译过程,您绝对应该了解 Makefiles 以及像 Autotools 这样的工具。安装mingwmsys 以及gdb 和一个好的make and autotools 实用程序可能是一个棘手的过程,但不能放弃。

标签: c++ compiler-construction include header codeblocks


【解决方案1】:

回答您的问题:

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

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

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

【讨论】:

    【解决方案2】:

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

    您应该只包含 .h。 .c 文件将以某种形式在您的程序中为linked。对于小型程序,您可以只将所有 .c 文件传递​​给 gcc,但较大的程序将涉及中间 .o 文件甚至库(staticdynamic)。

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

    【讨论】:

    • 它带有 mingw 5.1.6,其中包括相当过时的 gcc 3.4.5,我自己使用 TDM 的 GCC,它是更新的,新的代码块版本将在某一天发布也许,将包括一个更新的版本。
    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

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

      我宁愿在记事本++中开发 某种方式,因为这就是我 曾经在 Ruby 中使用过,但由于 C++ 是 编译,你可能会有不同的想法 (请就此提出建议和看法 也)

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

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


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

      【讨论】:

      • 更不用说 PaymySoft 的 Vi$ual Cash(ps。我不反对)。
      • 但是你不觉得所有的代码都自己写,而不是自动生成一些更好吗?
      • 借助 Visual Keyboard Xtreme 插件,您可以使用键盘编辑文件:>
      • 鉴于 Ell 使用的是 Code::Blocks 并且是 C++ 新手,我会推荐免费的 Visual C++ Express,而不是建议 800 美元的软件包,因为这对于学习语言来说太过分了。它可能是最好的,但在 IMO 的上下文中它不是一个有用的评论。
      • @Tom:我没有推荐特定版本的 VS。 Visual Assist X 有 40 天的评估期,所以他可以不花一分钱就听从我的建议。 @Ell:没有代码是“自动生成的”;您会得到可以遵循的提示。节省时间。
      猜你喜欢
      • 2015-12-19
      • 2019-06-12
      • 1970-01-01
      • 2021-02-13
      • 2016-03-19
      • 1970-01-01
      • 2011-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多