2015-10-27 47 views
0

承认我一直在使用的代码块很长一段时间,但从来就不是我的程序进入实际的代码块的项目。我今天试着去做,并且由于代码块没有识别我的文件,我一直在收到错误。这里是我有:----> CodeBlocks Include Error代码块的文件不在项目

当我尝试buiild我的项目时,我得到的cout,cin和我的类对象没有在我的menu.cpp文件中定义。所以我只能猜测代码块没有正确处理文件。

我会很喜欢,如果有人可以帮助我,为什么发生这种情况。

由于一吨提前:)

+1

你为什么要包含.cpp而不是.h? – nayana

+1

也请添加[MCVE](http://stackoverflow.com/help/mcve),而不是屏幕截图..它更舒适地检查文本中的代码,而不是打开外部链接到屏幕截图 - 并且错误消息不可见 – nayana

回答

1

当我尝试buiild项目中,我得到那个COUT,CIN和我的类对象是不是在我menu.cpp文件中定义。

那是因为他们没有。您#include d既不也不class.hmenu.cpp,所以你不能访问其中的声明。

注意代码块(就像任何设置正确的构建工具)将分别编译每个CPP文件。这意味着它不仅将编译menu.cpp作为main.cpp编译的一部分(因为你包含了它),它也将自己编译它。在后一种情况下,main.cpp中的includes将不可用,所以menu.cpp需要它自己的包含。

这也意味着,一旦它编译(即一旦你添加了包括),你会因为menu.cpp定义在main.o中现在被定义两次(一次得到一个链接错误 - 因为你包括menu.cpp在main.cpp中 - 一次在menu.o中)。这就是为什么你不应该将cpp文件包含进对方的原因。

PS:这无关你的问题,但它被认为是不好的做法,在头文件中使用using namespace。你应该把它放在你的cpp文件中(如果你想使用它)。您还应该将#include <iostream>放在您实际需要的文件中,而不是头文件中。

+0

感谢sepp2k,为您提供了所有有用的信息。我运行我的项目,而不包括cpp文件,它的工作。我现在也知道它之前为什么没有。万分感谢。 我会考虑你对名称空间和iostream所说的话。 谢谢你,祝你有美好的一天:) – Kobek

相关问题