草庐IT

0x00000001

全部标签

c++ - C++0x 中的栅栏,一般只保证原子或内存

C++0xdraft有一个栅栏的概念,这似乎与CPU/芯片级别的栅栏概念非常不同,或者说linux内核人员对fences的期望.问题是草案是否真的暗示了一个极其受限的模型,或者措辞很差,实际上暗示了真正的围栏。例如,在29.8Fences下,它声明如下:AreleasefenceAsynchronizeswithanacquirefenceBifthereexistatomicoperationsXandY,bothoperatingonsomeatomicobjectM,suchthatAissequencedbeforeX,XmodifiesM,YissequencedbeforeB

c++ - _1 是 C++0x 的一部分吗?

我见过two最近answers使用_1作为纯C++0x解决方案(没有明确提及boostlambda)。有没有像std::_1这样的动物?我认为拥有原生lambda会使这样的构造变得多余。std::_1的Google代码搜索结果为tworesults来自同一个项目,因此尚无定论。 最佳答案 是的,它们是std::placeholders命名空间内C++0x的一部分,来自最新草案(n3126)§20.8.10.1.3“Placeholders”:namespacestd{namespaceplaceholders{//Mistheimp

C++0x 与 Qt Creator

我正在尝试使用QtCreator中的新C++0x功能在Windows下(QtCreator2.0.1)。我读了线程ConfiguringtheGCCcompilerswitchesinQt,QtCreator,andQMake并将QMAKE_CXXFLAGS+=-std=c++0x添加到.pro文件中。QtCreator在这个简单的代码上给了我非常奇怪的错误:#includeintmain(){}编译器错误:'::swprintf'hasnotbeendeclared'::vswprintf'hasnotbeendeclared我尝试使用命令g++test.cpp--std=c++0x

c++ - 谁能解释当前 C++0x 标准草案的这一段?

谁能解释ISON3242的这句话?§3.2,第二点Anexpressionispotentiallyevaluatedunlessitisanunevaluatedoperand(Clause5)orasubexpressionthereof.Avariableornon-overloadedfunctionwhosenameappearsasapotentially-evaluatedexpressionisodr-usedunlessitisanobjectthatsatisfiestherequirementsforappearinginaconstantexpression(5

c++ - 为什么我在检查核心转储时进入 gdb "Cannot access memory at address 0x..."?

我在分析核心转储时尝试打印以下行时收到此消息。(gdb)p/x*($esi)Cannotaccessmemoryataddress0xe6d3a030我提到%esi(0xe6d3a030)指向的地址应该指向一些有效的分配数据。(当我自己运行这个程序并按照相同的指令中断时,这个打印有一些有意义的信息)造成这种情况的可能原因是什么?我是否遗漏了核心转储中的一些信息?如果是,我缺少什么信息?核心转储不应该包含所有已分配内存的快照吗?编辑:当我在加载核心转储时在gdb“维护信息部分”命令中使用时,我得到下面显示的信息。我可以看到地址0xe6d3a030在0xe6d00000->0xe6dfb0

c++ - -std=c++0x 和 -std=c++11 有什么区别

我知道这些标志适用于Eclipse中的C++11。但我不知道有什么区别,哪个更受欢迎。似乎他们都在正常使用C++11。 最佳答案 你应该更喜欢-std=c++11。(注意:我假设-std=c++11x是您问题中的错字)旧的-std=c++0x仅适用于不支持-std=c++11的旧编译器版本,他们选择该名称来表达当时即将推出的C++11的特性(和ABI)的初步和不稳定的性质(当时还不清楚它是否最终会成为C++10或C++12)。他们更改了一些细节以适应C++11标准正式发布之前不断变化的标准工作草案。如果您的编译器支持-std=c++

c++ - GDB 回溯消息 "0x0000000000000000 in ?? ()"是什么意思?

当它给出带有以下输出的回溯时是什么意思?#00x00000008009c991cinpthread_testcancel()from/lib/libpthread.so.2#10x00000008009b8120insigaction()from/lib/libpthread.so.2#20x00000008009c211ainpthread_mutexattr_init()from/lib/libpthread.so.2#30x0000000000000000in??()程序因标准信号11、段错误而崩溃。我的应用程序是一个在FreeBSD6.3上运行的多线程FastCGIC++程序,

c++ - 在 C++ 0x 中打开枚举类

C++0x中的新“枚举类”声明是否允许开启新奇的枚举?我问的是标准怎么说,而不是编译器支持。 最佳答案 来自n3242草案:6.4.2Theswitchstatement[stmt.switch][...]2Theconditionshallbeofintegraltype,enumerationtype,orofaclasstypeforwhichasinglenon-explicitconversionfunctiontointegralorenumerationtypeexists(12.3).7.2Enumerationde

c++ - 我应该写 `0x0` 还是 `0` 而不是 NULL?

我知道您应该在c++中使用0而不是NULL(即使NULL在C++中被定义为0大多数时间)。不过,最近我遇到了一些使用0x0代替的代码。有什么区别? 最佳答案 0x0只是0用十六进制表示。两者没有区别:016=010:)NULL通常是#defined到0某处并且做同样的事情。 关于c++-我应该写`0x0`还是`0`而不是NULL?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1

c++ - 在 C++0x 中,非静态数据成员初始化器会覆盖隐式复制构造函数吗?

根据N2628与c++0x相关,非静态数据成员初始化器可以被显式定义的构造函数覆盖,但是对于隐式定义的复制构造函数似乎有点模糊。特别是,我注意到在Appleclang3.0版中,行为会根据结构(或类)是否为POD而有所不同。以下程序返回输出“1”,这表明复制构造函数忽略右侧,而是替换新的非静态数据成员初始值设定项(在本例中,X的bool真值::一个)。#include#includestructX{std::stringstring1;boola=true;};intmain(intargc,char*argv[]){Xx;x.a=false;Xy(x);std::cout但是,令人困