草庐IT

c++ - 如何将编译标志 -g 添加到 make 文件?

我有一个C++程序,其他人为其制作了一个make文件。我想用标志-g编译程序,但我不知道在哪里添加它。下面是make文件。CC=g++LOADLIBES=-lmCFLAGS=-Wall-O2SRC1=Agent.cppBreeder.cppCandidateSolution.cpp\Cupid.cppFateAgent.cppGrid.cppReaper.cpp\fitness.cppSRC2=main.cppSRC=$(SRC1)$(SRC2)OBJS=$(SRC1:.cpp=.o)AUX=$(SRC1:.c=.h)main:$(OBJS)#$(CC)$(CFLAGS)-o$(SRC

c++ - 为什么这个程序是用 gcc 编译的,而不是用 g++ 编译的?

以下程序使用gcc编译但不使用g++,我只生成目标文件。这是prog.c:#include"prog.h"staticstructclnt_opstcp_nb_ops={4};这是prog.h:#ifndef_PROG_#define_PROG_#include#endif当我这样做时:gcc-cprog.c生成目标代码但是,g++-cprog.c给出错误:variable‘clnt_opstcp_nb_ops’hasinitializerbutincompletetype如何解决这个问题? 最佳答案 在clnt.h中看这个结构体的

c++ - g++ 递归地包含所有/usr/include

我正在尝试编译一个简单的程序,用#includegtkmm.h的路径是/usr/include/gtkmm-2.4/gtkmm.h。g++看不到这个文件,除非我特别告诉它-I/usr/include/gtkmm-2.4。我的问题是,我如何让g++自动递归地查看/usr/include中的所有目录以查找其中包含的所有头文件,为什么这不是默认操作? 最佳答案 在这种情况下,正确的做法是在Makefile或构建脚本中使用pkg-config:#Makefileifeq($(shellpkg-config--modversiongtkmm-

c++ - 为什么 g++ 在编译后的二进制文件中存储类名?

我注意到,如果我在由g++编译的程序上运行strings,输出包含它使用的各种类的名称。程序是用-O3编译的,没有-g或-p,当我去掉二进制。我想知道为什么g++必须将此信息存储在二进制文件中?出现的类名似乎都是使用虚函数的类,所以我怀疑这与它有关。 最佳答案 这可能与RTTI有关,具体来说,RTTI允许您查询给定变量的类的名称。查看typeid关键词。如果是这种情况,那么它就可以解释为什么它只发生在具有虚函数的类中——RTTI仅适用于具有虚函数的类。编辑:正如@xeno指出的那样,它确实是RTTI,如果您添加-fno-rtti,则

c++ - g++ 4.7.2 中缺少 std::stoi?

当我尝试使用std::stoi并尝试编译它时,我收到错误消息“stoi不是std的成员”。我从命令行使用g++4.7.2,所以它不会是IDE错误,我的所有包含都按顺序排列,g++4.7.2默认使用c++11。如果有帮助,我的操作系统是Ubuntu12.10。有什么我没有配置的吗?#include#includeusingnamespacestd;intmain(){stringtheAnswer="42";intans=std::stoi(theAnswer,0,10);cout不会编译。但它没有任何问题。 最佳答案 std::st

c++ - 使用 g++ 4.8 时缺少 std::vector::erase() 的 const_iterator 重载

followingexample不会使用g++4.8.2编译:#include#includeusingnamespacestd;intmain(){vectorv{1,2,3};v.erase(v.cbegin());//Compilercomplainsreturn0;}编译器说了以下内容。(它不是很可读,但它提示vector::const_iterator和vector::iterator之间没有已知的转换。)prog.cpp:Infunction‘intmain()’:prog.cpp:8:20:error:nomatchingfunctionforcallto‘std::ve

c++ - 为什么在 g++ std::intmax_t 中不是 __int128_t?

我的问题很简单:因为std::intmax_t根据cppreference定义为maximumwidthintegertype,为什么不对应GCC中的__int128_t? 最佳答案 我认为这违反了C和C++标准——或者gcc不考虑__int128_t是一个整数类型。C标准(1999版和2011版)不需要intmax_t成为标准类型之一;它必须是“能够表示任何有符号整数类型的任何值的有符号整数类型”。特别是,它可以是一个扩展整数类型——如果有一个128位扩展整数类型,那么intmax_t必须至少为128位宽。C标准甚至建议使用实现定

c++ - 在VC++编译的应用程序中使用G++编译的DLL(插件)会出现什么问题?

我使用并使用VisualC++编译器编译的应用程序。它可以以.dll的形式加载插件。它到底做了什么并不重要,事实是:这包括从.dll调用返回指向应用程序API对象指针的函数等。我的问题是,当应用程序从.dll调用函数、从中检索指针并使用它时,可能会出现什么问题。例如,我想到的是指针的大小。VC++和G++有区别吗?如果是,这可能会使应用程序崩溃?我不想使用VisualStudioIDE(不幸的是,这是使用ApplicationsSDK的“首选”方式)。我可以将G++配置为像VC++一样编译吗?PS:我用的是MINGWGNUG++ 最佳答案

windows - 在 Windows 7 64 位上使用 MinGW gcc/g++ 编译 openCV 2.3.1 程序

一周以来,我一直在努力编译openCV程序。我已经尝试了所有可能在互联网上找到的内容。我所做的是:我已经下载了OpenCV-2.3.1-win-superpack.exe并关注thisofficialinstallationguide.在CMake(gui)中,我的源是:D:\opencv,构建目标是:C:\opencv。我还将C:\opencv\install\bin;C:\opencv\bin添加到我系统的PATH变量中。我想要的是使用MinGW的gcc/g++编译器在我的Windows操作系统上编译openCV程序。我已经尝试了在互联网上找到的各种gcc/g++参数,并且在使用-

c++ - MinGW g++ 在其自己的包含目录中找不到 header

所以我最近通过最新版本的nuwen'sMinGWdistribution安装了MinGW其中包括boostC++库。具体来说,我是在boost库提供的scoped_ptr之后。但是,当我尝试在header中包含scoped_ptr(#include)时,编译器会抛出error:boost/scoped_ptr.hpp:Nosuchfileordirectory生成文件:compile:g++-ogen/cavestorysrc/**.ccrun:gen/cavestory此外,我在SDL/**下的MinGW包含目录中添加了一个旧版本的SDL。所有的头文件都在那里,我检查过,编译器在我的