什么应该是C ++项目的结构?

时间:2010-04-25 11:45:13

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

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

这些线做了什么?

#ifndef TEXTGAME_H_INCLUDED
#define TEXTGAME_H_INCLUDED

#endif // TEXTGAME_H_INCLUDED

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

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

先谢谢,等等。

编辑:我在Windows XP&感谢灯光快速回复!

4 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:3)

回答你的问题:

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

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

  • Code :: Blocks附带的C ++编译器称为MinGW GCC,可以在MinGW安装的bin目录中找到。要找到它,请通过资源管理器搜索“g ++”进行Windows搜索。要使用它,您需要将其所在的目录放在搜索路径中。请注意Code :: Blocks附带的编译器版本已经过时了 - 您可以从here获得更新版本。

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:-1)

除了以下情况,其他人都回答了您的所有问题:

  

我宁愿用记事本++开发   因为那就是我的意思   曾经在Ruby中使用但是因为C ++是   编译,你可能会有不同的想法   (请就此提出建议和意见   以及)

我认为这是一个非常糟糕的主意。一个完整的IDE,带有集成的调试器,跳转到符号定义,重构功能,分析器,智能感知等,对于任何现实世界的项目来说都是必不可少的。

绝对最好的是Visual Studio * Visual Assist X **。 Code :: Blocks相比之下的pales;)


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