草庐IT

c++ - 仅当 .h 位于特定目录中时,g++ 才会神秘地失败

我在全新的OSX10.4.11+Xcode2.5安装中遇到了一个非常奇怪的问题。我已将其简化为最小的测试用例。这是test.cpp:#include"macros.h"intmain(void){return1;}这是macros.h:#ifndef__JUST_TESTING__#define__JUST_TESTING__templatevoidswap(T&pT1,T&pT2){TpTmp=pT1;pT1=pT2;pT2=pTmp;}#endif//__JUST_TESTING__如果两个文件都在同一目录中,则编译和工作正常。但是,如果我将macros.h放入/usr/inclu

c++ - 映射#include 的工具

是否有可用的工具获取一组源文件并映射(以图形方式)它们如何通过#include链接?我想看看哪里有循环引用。 最佳答案 我相信doxygen:http://www.doxygen.org/安装了graphviz:http://www.graphviz.org/会做的。 关于c++-映射#include的工具,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/3233471/

c++ - 如何将此 OpenGL 生成文件从 Linux 转换到 Mac OS X?

我正试图在我的MacBook上编译一个OpenGL程序,但不知道如何转换这个makefile。CFLAGS=-I/usr/X11R6/include-I/usr/local/includeLDFLAGS=-L/usr/X11R6/lib-L/usr/local/lib-lGL-lGLU-lm-lglutBINARIES=q2all:$(BINARIES)clean:-rm*.o$(BINARIES)q2:q2.og++$(LDFLAGS)$^-oq2q2.o:q2.cppg++-c$(CFLAGS)q2.cppdepend:makedepend*.cpp 最

C++ - include <string> 错误

我是c++的新手,正在编写教程。我已经完全复制了教程,但在编译时出现此错误:'Stringfilenotfound'对于行#include;有人可以告诉我如何修改吗? 最佳答案 Ok,soIchangedthenameofmyfilefrom.Cto.cppandthisparticularissueseemstohavegone.您似乎找到了解决方案,我添加这个是为了阐明为什么会发生这种情况。一些与IDE集成的编译器会处理.c文件作为C源代码.cpp(或.cc、.c++等)作为C++代码。当你编译.c文件,不包括C++支持,并且使

c++ - fork 命令是否适用于多线程应用程序?

我试图创建一个多线程应用程序。似乎fork还没有复制我的第二个线程。这是我的代码:#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusingnamespacestd;voidLoop(constchar*zThread){while(true){sleep(2);cout它给出以下输出,其中不包含子进程的第二个线程写入的任何信息。test_1/ss>./a.outParent:11877Child:11879LO

java - 将 c++ 映射转换为 jobject JNI?

我想将C++映射传输到Java,但不知道如何定义返回参数以使该方法有效。我对string或int作为返回参数没有任何问题,但我无法让map工作。我的Java方法如下所示:privatenativeMapsayHello();我的C++代码是:#include#include"stdafx.h"#include"jni.h"#include"HelloJNI.h"#include#include#include#includeusingnamespacestd;JNIEXPORTjobjectJNICALLJava_HelloJNI_sayHello(JNIEnv*,jobject){m

c++ - '#include' 和 'using' 语句是否应该在头文件和实现文件 (C++) 中重复?

我是C++的新手,但我的理解是#include语句基本上只是将#included文件的内容转储到该语句的位置。这意味着如果我的头文件中有许多'#include'和'using'语句,我的实现文件可以只#include头文件,如果我不重复其他语句,编译器就不会介意.但是人呢?我主要担心的是,如果我不重复“#include”、“using”和“typedef”(现在我想到了)语句,它会从它所在的文件中获取该信息使用,这可能会导致混淆。目前我只是在处理小型项目,它不会真正造成任何问题,但我可以想象,在有更多人参与的大型项目中,它可能会成为一个重大问题。例子如下:更新:我的“Unit”函数原型

c++ - 字符数组作为 C++ 映射中的值

我想定义类似的东西MapmyMap;上面的声明被c++编译器接受并且没有错误抛出但是当我做这样的事情时intmain(){chararr[5]="sdf";mapmyMap;myMap.insert(pair(0,arr));return0;}我得到的错误是:Infileincludedfrom/usr/include/c++/4.6/bits/stl_algobase.h:65:0,from/usr/include/c++/4.6/bits/char_traits.h:41,from/usr/include/c++/4.6/ios:41,from/usr/include/c++/4.

c++ - .rc 文件中的 TEXTINCLUDE 部分重复

在我的.rc文件中,我发现3个TEXTINCLUDE部分重复了两次,但内容不同。当我打开“资源包含”时,只显示前3个部分的包含。我很久以前就对.rc进行了调整,所以它可能是那个的遗留物。我可以安全地删除后3个部分吗?我从我的.rc文件中粘贴了这个,您可以看到TEXTINCLUDE部分是如何重复的(即“3TEXTINCLUDE”后面跟着“1TEXTINCLUDE”。1TEXTINCLUDEBEGIN"resource.h\0"END2TEXTINCLUDEBEGIN"#include""afxres.h""\r\n""#include""res/Pngs.h""\r\n""#includ

c++ - 使用 C++11 在 Cygwin 上使用 Clang

我在Cygwin上安装了Clang并尝试编译这段代码:#includeintmain(){std::cout如果我执行clang++file.cpp,效果很好。如果我执行clang++file.cpp-std=c++11,它将不起作用。我从这样的标准header中得到错误:Infileincludedfromfile.cpp:1:Infileincludedfrom/usr/lib/gcc/i686-pc-cygwin/4.5.3/include/c++/iostream:39:Infileincludedfrom/usr/lib/gcc/i686-pc-cygwin/4.5.3/in