草庐IT

C++标准

全部标签

c++ - 如何让 gcc 打印所有链接的库?

即使是最简单的“helloworld”程序,也可以使用命令进行编译和链接"gcc-ohellohello.c",必须有某个版本的标准C库链接到hello.o的构建目标。我正在寻找的正是那种在编译链接过程中由gcc“secret”链接的库。有什么办法吗? 最佳答案 $gcc-ohello-Xlinker-vhello.ccollect2version4.6.3(x86-64Linux/ELF)/usr/bin/ld--sysroot=/--build-id--no-add-needed--as-needed--eh-frame-hdr

c++ - 标准概念列表?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭8年前。Improvethisquestion据我所知,C++有Mergable、Container、Comparable、Sortable、Arithmetic等概念。我到处都看到它们,但我从未见过列表。在哪里可以找到标准C++概念的列表?-edit-人们很困惑,但我的意思是th

c++ - snprintf 的逆函数

C或C++中是否有任何函数可以执行snprintf的逆运算,这样charbuffer[256]snprintf(buffer,256,"Number:%i",10);//Buffernowcontains"Number:10"inti;inverse_snprintf(buffer,"Number:%i",&i);//inowcontains10我可以自己写一个满足这个要求的函数,但是标准库中已经有了吗? 最佳答案 是的,有sscanf().它返回与输入成功匹配的标记数,因此您可以检查返回值以查看它在输入字符串中的位置。if(ssc

c++ - 字符是否在 C 表达式中自动提升?

我对我的一位同事发表了声明,内容是:"charsareautomaticallypromotedtointegersinCexpressions,andthat'sfineforperformancesinceCPUsworkfastestwiththeirnaturalwordsize.我相信由于字符的等级,字符提升行为已在标准中的某处说明。这是我得到的回复:"Charactersarenotdefaultpromotedtoaninteger.Theregistersizeis32bit,butmultiplebytevaluesinarowcanbepackedintoasing

c++ - 在包含 float 的结构上使用 memset()

在一个C/C++混合项目中,我发现了一些我可以简化为的代码#includestructStructContainingDouble{doubled;///otherelementsomitted};voidclear(StructContainingDouble*p){memset(p,0,sizeof*p);}不停止Cppcheck以引发可移植性警告Usingmemset()onstructwhichcontainsafloatingpointnumber.消息是正确的,但是由于float被声明为double,所以它似乎是误报,因为在double中,(正)零值是按照IEEE754标准

c++ - 为什么标准 R 中值函数比简单的 C++ 替代函数慢得多?

我在C++中实现了以下中位数,并通过Rcpp在R中使用它://[[Rcpp::export]]doublemedian2(std::vectorx){doublemedian;size_tsize=x.size();sort(x.begin(),x.end());if(size%2==0){median=(x[size/2-1]+x[size/2])/2.0;}else{median=x[size/2];}returnmedian;}如果我随后将性能与标准内置R中值函数进行比较,我将通过microbenchmark获得以下结果>x=rnorm(100)>microbenchmark(m

c++ - 是否有预处理器定义来区分 gcc 和 g++ 代码?

是否有在gcc和g++编译器中定义的预处理器宏,以便如果我想让我的C代码链接到C标准库或C++标准库?像这样的东西:一些文件.c#ifdef__CPP__#include#else#include我确定有,但快速的Google搜索并没有立即指向我,我确定有人会发布重复的问题,但无论如何,请指出正确的方向。 最佳答案 在c++中你可以#ifdef__cplusplus例如,如果c++代码您希望编译器将某些代码片段作为c代码来处理,您需要将该代码块放入#ifdef__cplusplusextern"C"{#endif#ifdef__cp

c++ - uint32、int16、uint8 .. 为什么这些常用数据类型没有纳入标准

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭5年前。Improvethisquestion多年来,在涉及C/C++的多个组织和各种项目中,我发现通过定义本地版本的types.h解决了对固定宽度整数的需求,它看起来像这个:-typedefsignedcharint8;typedefunsignedcharuint8;typedefsignedshortint16;typedefunsignedshortuint16;typedefsignedlongint32;typedefun

c++ - c 和 c++ 中二维数组元素的类型是什么?

例如intarr[2][3]=...arr[0]的类型是int(*)[3]//pointertoint[3],whichisapointer.或者int[3]//anarraywhosesizeis3,whichisanarray.谷歌没有告诉我关于这个问题的任何信息。我知道指针和数组是不同的类型(派生类型)。可能C和C++的处理方式不同,希望能看到标准的写法。 最佳答案 arr[0]是int[3]类型,不是指针。int(*p)[3]属于int(*)[3]类型,表示指向包含3个元素的数组的指针。指针不是数组,数组也不是指针。现在,当

C++ 标准 vector resize() 函数

resize()根据给定的大小添加/删除元素。reserve()保留内存空间,不会重新分配内存。我的问题是resize是否也像vector的容量一样工作,只会不增加?要添加,将组合:std::vectorvector;vector.reserve(5);vector.resize(5);有意义吗?它是多余的吗?这里的目标是能够覆盖vector中的值,而无需vector分配任何额外空间。 最佳答案 来自thissite:resize():这使您可以将vector的大小更改为您想要的任何大小。它将用元素填充底层缓冲区。reserve()