草庐IT

non-volatile

全部标签

c++ - xvalues : differences between non class types and class types

考虑下面的最小示例:#includestructS{};intmain(){Ss;std::move(s)=S{};}它编译没有错误。如果我改为使用非类类型,则会收到错误。例如,以下代码无法编译:#includeintmain(){inti;std::move(i)=42;}枚举、作用域枚举等也是如此。错误(来自GCC)是:usingxvalue(rvaluereference)aslvalue这背后的原理是什么?我想这是对的,但我想了解我可以对除非类之外的所有类型执行此操作的原因是什么。 最佳答案 C++允许对类对象右值进行赋值,

c++ - G++ 编译器错误或错误代码? : "template definition of non-template"

作为大型程序的特征类的一部分,我尝试创建一个静态类变量,该变量可能具有不同的值,具体取决于实例化封闭类模板的类型。我已经简化了相关代码以生成我正在谈论的内容的简单示例:#include#include#includetemplatestructFoo;templatestructFoo::value>::type>{staticstd::stringmessage;};templatestructFoo::value>::type>{staticstd::stringmessage;};templatestd::stringFoo::message;对于GCC4.6,这会产生一个编译器

c++ - 静态 C++ 映射初始化错误 C2552 : non-aggregates cannot be initialized with initializer list

我正在尝试使用以下代码在header中初始化map,但它一直在标题中显示错误。我正在使用C++11,所以这应该是可能的,对吧?typedefstd::map>AnimationSpeedMap;AnimationSpeedMapAnimationSpeeds={{NPCAnimation::WALK,{{Direction::LEFT,sf::milliseconds(100)},{Direction::RIGHT,sf::milliseconds(100)},{Direction::UP,sf::milliseconds(200)},{Direction::DOWN,sf::mill

c++ - 在 C/C++ 中,是否保证 volatile 变量在线程之间具有最终一致的语义?

是否有任何普遍遵循的标准(ISOC或C++,或任何POSIX/SUS规范)一个变量(也许标记为volatile),不受互斥量保护,正在被访问由多个线程将变得最终一致,如果它是分配给?举个具体的例子,考虑两个线程共享一个变量v,初始值为零。线程1:v=1线程2:同时(v==0)产量();是否保证线程2最终会终止?或者可以吗可以想象永远旋转,因为缓存一致性永远不会启动并使分配在线程2的缓存中可见?我知道C和C++标准(在C++0x之前)不在所有关于线程或并发。但我很好奇C++0x是否内存模型或pthreads或其他任何东西都可以保证这一点。(显然,这确实适用于32位x86的Windows;

c++ - 当一个成员函数是 volatile 时,这意味着什么?

这个问题在这里已经有了答案:WhatisthepurposeofavolatilememberfunctioninC++?(2个答案)关闭9年前。我通常看到const说明符用于指示const成员函数。但是,当使用volatile关键字时,这意味着什么?voidf()volatile{}这对我来说编译得很好,但我不明白这是干什么用的。我在搜索中找不到任何关于此的信息,因此非常感谢您的帮助。更新:为了清楚起见,我知道volatile的用途。我只是不知道在这种情况下这意味着什么。

新创建多模块工程执行maven编译打包出现non-resolvable parent pom异常

新创建多模块工程在执行mvncleaninstall时抛出non-resolvableparentpom找不到父pom异常:[FATAL]Non-resolvableparentPOMforcom.alibaba:*****:[unknown-version]:Couldnotfindartifactcom.-parent:pom:-SNAPSHOTand‘parent.relativePath’pointsatnolocalPOM@line12,column10解决办法在子模块标签内添加:../pom.xml原因pomparent标签寻找路径:relativePath本地仓库远程仓库因为是新

c++ - 所有全局变量都应该是 volatile 限定的吗?

在此示例中,正确性是否需要将global_value声明为volatile?intglobal_value=0;voidfoo(){++global_value;}voidbar(){some_function(++global_value);foo();some_function(++global_value);}我的理解是volatile是“打算”用于pointerstomappedmemoryandvariableswhichcanbemodifiedbysignals的(强调不是线程安全)但很容易想象bar可能会编译成这样的东西:pushEAXmovEAX,global_val

解决subprocess.CalledProcessError: Command ‘[‘dot‘, ‘-Tpdf‘, ‘-O‘, ‘Digraph.gv‘]‘ returned non-zero

目录解决subprocess.CalledProcessError:Command'[‘dot‘,‘-Tpdf‘,‘-O‘,‘Digraph.gv‘]'returnednon-zero问题描述解决方法1.检查命令是否正确2.检查Graphviz是否已正确安装3.检查文件是否存在4.检查文件权限5.检查路径设置总结解决subprocess.CalledProcessError:Command'[‘dot‘,‘-Tpdf‘,‘-O‘,‘Digraph.gv‘]'returnednon-zero在使用Python的subprocess模块执行外部命令时,有时候会遇到​​CalledProcessEr

c++ - const_cast<> 在 volatile 上的目的是什么?

我看到可以这样做,但我不明白其中的兴趣。 最佳答案 const和volatile听起来它们在变量上指的是相同的想法,但实际上并非如此。const变量不能被当前代码改变。volatile变量可能会被当前代码之外的某些外部实体更改。有可能有一个constvolatile变量——尤其是像内存映射寄存器这样的东西——在你的程序无法预测的时候被计算机改变,但你的代码不允许直接改变.您可以使用const_cast向变量添加或删除const或volatile(“cv-qualification”)。

c++ - 此多线程 C++ 代码中是否需要 'volatile'?

我用C++编写了一个Windows程序,它有时使用两个线程:一个后台线程用于执行耗时的工作;和另一个用于管理图形界面的线程。这样程序仍然响应用户,这是能够中止某个操作所必需的。线程通过共享的bool变量进行通信,当GUI线程向工作线程发出信号以中止时,该变量设置为true。以下是实现此行为的代码(我已删除不相关的部分):GUI线程执行的代码classProgressBarDialog:protectedDialog{/***Thispointstothevariablewhichtheworkerthreadreadstocheckifit*shouldabortornot.*/boo