草庐IT

c++ - 据我所知,下面的函数不是 constexpr,而是用 clang 和 g++ 编译的代码。我错过了什么?

我从N4140的§5.19/2中得到这个例子:constexprintincr(int&n){return++n;}据我所知,这不是一个constexpr函数。但是这段代码是用clang和g++编译的。参见liveexample.我在这里缺少什么? 最佳答案 在C++14中,constexpr函数的规则放宽了,论文N3597:Relaxingconstraintsonconstexprfunctions.该论文探讨了基本原理和效果,包括以下内容(强调我的):AsinC++11,theconstexprkeywordisusedtom

c++ - g++ 链接器 :/usr/lib/libGL. so.1:无法读取符号:无效操作

我正在尝试在Ubuntu10.04(我有一个32位系统)下构建一个非常简单的OpenGL应用程序。当我试图编译文件时,我收到错误消息:g++-L/usr/libsimple.cpp-lglut/usr/bin/ld:/tmp/ccoPczAo.o:undefinedreferencetosymbol'glEnd'/usr/bin/ld:note:'glEnd'isdefinedinDSO//usr/lib/libGL.so.1sotryaddingittothelinkercommandline//usr/lib/libGL.so.1:couldnotreadsymbols:Inval

c++ - 尝试使用 Rcpp 编译 c++11 时出现 g++ 错误

系统规范:操作系统-MacOSX10.6.8(SnowLeopard)g++-Macportsgcc4.8.1_2+universalR-2.15.3Rcpp-0.10.3当我尝试编译在R中使用C++11的函数(通过Rcpp)时,我一直收到错误-由于某种原因,g++无法识别-std=c++11选项。这个例子取自Rcpp帮助文件(它不包含任何特定于C++11的内容,但可以说明我的问题所在)。如果我尝试运行:require(Rcpp)Sys.setenv("PKG_CXXFLAGS"="-std=c++11")cppFunction(plugins=c("cpp11"),'intuseCp

c++ - g++ 4.7.1 编译错误 : conflicting types for ‘strsignal’

我正在尝试在Ubuntu12.0432位上从源代码编译g++4.7.1。目前我已经完全做到了:https://askubuntu.com/questions/168947/how-to-upgrade-g-to-4-7-1除了在编译g++4.7.1之前,它要求我“取消设置LIBRARY_PATH”(所以我已经这样做了)。所以编译开始了,过了一会儿我收到以下错误消息:Infileincludedfrom../.././gcc/c-lang.c:24:0:../.././gcc/system.h:499:20:erreur:conflictingtypesfor‘strsignal’/us

c++ - g++ 编译器标志以最小化二进制大小

我有一个ArduinoUnoR3。我正在使用C++为我的每个传感器制作逻辑对象。Arduino的板载内存非常有限,只有32KB*,平均而言,我编译的对象大约为6KB*。我已经在使用所需的尽可能小的数据类型,以尽量减少我的内存占用。是否有编译器标志来最小化二进制文件的大小,或者我是否需要使用更短的变量和函数名称、更少的函数等来最小化我的代码库?此外,任何其他关于最小化二进制大小的提示或建议将不胜感激。*它可能不是以KB为单位衡量的(因为我面前没有它),但1个对象大约占我总内存大小的1/5,这引起了我的关注。 最佳答案 除了评论中提到的

c++ - g++中的尾递归问题

我正在研究C++中的尾递归函数,并且在使用g++编译器时遇到了一些问题。当numbers[]的大小超过几百个整数时,以下代码会导致堆栈溢出。检查g++为以下内容生成的汇编代码表明twoSum_Helper正在对其自身执行递归call指令。问题是以下哪项导致了这种情况?我忽略了以下阻止尾递归的错误。我在使用g++时犯了一个错误。g++编译器中的尾递归函数检测缺陷。我正在通过带有g++4.5.0的MinGW在WindowsVistax64上使用g++-O3-Wall-fno-stack-protectortest.c进行编译。structresult{inti;intj;boolfound

c++ - 为什么没有针对未使用的临时文件的 gcc/g++ 警告?

考虑以下代码:voidListenerImpl::attach(boost::shared_ptrsubscriber){boost::unique_lock(mtx);subscribers.push_back(subscriber);}voidListenerImpl::notify(MsgPtrmsg){boost::unique_lock(mtx);//notifyallsubscribersBOOST_FOREACH(boost::shared_ptrsubscriber,subscribers){subscriber->update(msg);}}(这是GoF中描述的观察者

c++ - 没有 libstdc++ 的 g++ - 可以做到吗? - 一个非常可配置的轻量级 libstdc++,我可以在其中轻松取出东西也可以解决问题

我正在尝试一些诡异的东西。我正在尝试编写C++程序,用GNU的g++编译,但不依赖于libstdc++:)但似乎我需要它,即使是最基本的东西也需要它。具有可配置功能集的libstdc++是可以接受的。我使用的命令是g++-nodefaultlibs-fno-rtti-fno-exceptions-lc没有libstdc++,我得到:undefinedreferenceto`operatordelete(void*)'undefinedreferenceto`operatornew(unsignedint)'undefinedreferenceto`vtablefor__cxxabiv1

c++ - 在比较用 C++ 编写的两种不同算法时,您使用的优化级别 (g++) 是多少?

我有两个用C++编写的算法。据我所知,用编译是常规的-O0-NDEBUG(g++)同时比较两种算法的性能(渐近它们是相同的)。但我认为优化级别对其中之一不公平,因为它在所有情况下都使用STL。使用普通数组的程序在使用-O0选项编译时比STL-heavy算法快5倍。但是当我用-O2-NDEBUG编译它们时,性能差异并没有太大的不同。有什么方法可以在优化级别-O0下充分利用STL(我在vector[]运算符中的性能受到严重影响)?在比较两种算法时,您使用什么优化级别(可能还有-NDEBUG等变量)?如果有人能提供一些关于比较用C++编写的算法的性能的学术研究趋势的想法,也会有很大的帮助?好

c++ - 如何使用 g++ 链接 .o 文件

我正在尝试使用g++编译一个.cc文件,我需要它来链接一个.o文件。所以我尝试了:$g++-oclient-I../ipc-L../messages.oclient.cc/usr/bin/ld:error:../messages.o:cannotreaddirectory:Notadirectory我试过:$g++-oclient-I../ipc-l../messages.oclient.cc/usr/bin/ld:error:cannotfind-l../messages.pb.o$$ls-l../messages.o-rw-r--r--1hap497hap4972279362010