CodeBlocks文件在项目中无法识别

时间:2015-10-27 11:49:02

标签: c++ header codeblocks

我已经使用代码块很长一段时间了,但从未真正将我的程序变成实际的代码块项目。我今天试图这样做,并且由于代码块无法识别我的文件而导致错误。这就是我所拥有的:----> CodeBlocks Include Error

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

如果有人可以帮我解决为什么会这样,我会很高兴。

提前感谢:)

1 个答案:

答案 0 :(得分:1)

  

当我尝试修复我的项目时,我得到了那个cout,我的menu.cpp文件中没有定义cin和我的类对象。

那是因为他们不是。 #include iostream} class.hmenu.cppusing namespace,因此您无法访问其中的声明。

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

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

PS:这与您的问题无关,但在头文件中使用#include <iostream>被认为是不好的做法。你应该把它放在你的cpp文件中(如果你想要使用它)。您还应该将 try { LocalSocket mSocket=new LocalSocket(); LocalSocketAddress address=new LocalSocketAddress("wlan0",LocalSocketAddress.Namespace.ABSTRACT); mSocket.connect(address); } catch ( IOException ex) { Log.d("exception raised ", Log.getStackTraceString(ex)); } 放在实际需要它的文件中,而不是头文件。