我正在尝试编译下面的简单程序。但是,它没有编译并给出错误:errorC2065:'cout':undeclaredidentifier我想问你,为什么我已经在其中包含了iostream头文件,这个程序却不能运行?#includevoidfunction(int){cout提前致谢。 最佳答案 cout流在std命名空间中定义。所以命名它你写:std::cout如果你想把它缩短为cout那么你可以写usingnamespacestd;或usingstd::cout;在写cout之前。任何好的文档来源都会告诉您哪个命名空间包含一个对象。
这是一个非常基本的问题。我一直在学习C++,到目前为止我只使用了标准库。我一直在包含之类的内容并且没有问题。现在我想使用ApacheXerces,所以我已经将它安装在我的机器(一个Debian系统)上,并且正在遵循一个说我需要包含的教程:#include但是g++说“错误:xercesc/sax2/SAX2XMLReader.hpp:没有这样的文件或目录”。它在看哪里?我需要提供更多信息吗?谢谢。 最佳答案 使用--verbose选项:[...]#include"..."searchstartshere:#includesearch
有没有关于如何正确使用#include的资料?我没有找到任何详细解释这种用法的C/C++教科书。在正式的项目中,我总是在处理它时感到困惑。 最佳答案 总是让我绊倒的一个大问题是:这会在头文件路径中搜索:#include这会在您的本地目录中搜索:#include"myfile.h"你应该对每个标题做的第二件事是:我的文件名.h:#ifndefMYFILENAME_H#defineMYFILENAME_H//putcodehere#endif这种模式意味着你不能在编译中重新定义标题(为orsogufo向我指出这被称为“包含保护”而欢呼)
编译这段代码时,我得到:fatalerrorC1083:无法打开包含文件:'fstream.h':没有这样的文件或目录为什么?代码:#include//useasneededforyoursystem#include#include#include#include//**************GlobalDatacharifileName[30],oFileName[30];fstreaminFile,outFile;//************DatastructurestructGLfloatPoint{GLfloatx,y;};constintMAX=100;classGLfl
编辑:我知道方法1本质上是无效的,并且可能会使用方法2,但我正在寻找最好的hack或更好的解决方案来缓解猖獗的、可变的命名空间扩散。我在一个命名空间中有多个类或方法定义,它们具有不同的依赖关系,并且希望尽可能使用最少的命名空间block或显式范围,但同时将#include指令与尽可能需要它们的定义进行分组。我从来没有看到任何迹象表明可以告诉任何预处理器从#include内容中排除命名空间{}范围,但我在这里询问是否有可能进行类似的操作:(请参阅底部以了解为什么我想要一些死的东西简单)//NOTE:apple.h,etc.,contentsare*NOT*intendedtobeinna
此代码在msvc/g++上编译:classA{protected:inti;classB{public:A*a;B(A*a_):a(a_){}voiddoSomething(){if(a)a->i=0;//如您所见,B可以访问封闭类的“protected”部分,尽管它没有被声明为友元。这是一种标准(符合标准的)行为吗?我有时会使用此功能,但我不记得有一条规则说嵌套的protected类应该自动访问封闭类的所有protected数据。 最佳答案 在C++03标准中,11.8p1说:Themembersofanestedclasshav
我开始学习C++,我读了一本书,上面写着我必须使用头文件,因为字符串类型没有直接内置到编译器中。如果我使用我可以使用字符串类型。我是否必须包含如果我包含,我想使用字符串类型时的header标题?为什么?有什么区别吗? 最佳答案 是的,您必须包含您使用的内容。不强制要求标准header相互包含(IIRC除外)。它现在可能可以工作,但在不同的编译器上可能会失败。在你的情况下,显然是包括,直接或间接,但不要依赖它。 关于c++-我必须在旁边使用#include吗?,我们在StackOverfl
我正在用C++进行一些OpenGL编程。这是我的代码的一部分:#include#include#include#include#include我该如何解决这个问题?编辑:我使用的是MicrosoftVisualC++ExpressEdition。不好意思忘记说了 最佳答案 你可能还没有安装GLUT:安装GLUT如果您的机器上没有安装GLUT,您可以从以下位置下载它:http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip(或任何版本)GLUT库和头文件是•glut32.lib•过剩.
我正在交换机器(在两台Windows8.1笔记本电脑之间)并且刚刚从TFS加载了我正在处理的项目。在一台机器上它编译,在另一台机器上它没有并给出第一个错误errorC1083:Cannotopenincludefile:'atlbase.h':Nosuchfileordirectory我在两台笔记本电脑上都运行VisualStudioUltimate2013。在第一台笔记本电脑上,我检查了它在哪里拾取atlbase.h它来自C:\ProgramFiles(x86)\MicrosoftVisualStudio11.0\VC\atlmfc\include即来自VisualStudio201
我知道这对项目没有什么影响,但是假设您对C++代码使用#definedheader保护,您使用什么格式?例如假设有一个名为foo.hpp的header:#ifndef__FOO_HPP__...#ifndefINCLUDED_FOO_HPP...#ifndefSOME_OTHER_FORMAT我对大写#defines的想法很满意,但无法确定这些守卫的格式。 最佳答案 我总是在包含保护中包含命名空间或相对路径,因为只有header名称已被证明是危险的。例如,您有一些大型项目,其中两个文件位于代码中的某处/myproject/modul