草庐IT

condition_variable

全部标签

c++ - Python API C++ : "Static variable" for a Type Object

我有一个关于静态变量和TypeObjects的小问题。我使用APIC包装一个c++对象(我们称它为Acpp),它有一个名为x的静态变量。让我们将我的TypeObject称为A_Object:typedefstruct{PyObject_HEADAcpp*a;}A_Object;TypeObject作为“A”附加到我的python模块“myMod”。我已经定义了getter和setter(tp_getset),这样我就可以从python访问和修改Acpp的静态变量:>>>importmyMod>>>myA1=myMod.A(someargs...)>>>myA1.x=34#usingth

c++ - 是否有针对 "conditional expression is constant"的 gcc 警告?

我继承了一个相当大的代码库,其中有人以某种方式编写了几个这样的条件:enum{FOO_TYPE_A,FOO_TYPE_B,FOO_TYPE_C,FOO_TYPE_D};voidbar(intfooType){if(fooType==FOO_TYPE_A||FOO_TYPE_B)//条件检查应该明确在哪里:if(fooType==FOO_TYPE_A||fooType==FOO_TYPE_B)在gcc中有没有警告我可以打开找到它们,类似于MSDN的C4127?具体来说,我使用的是AndroidNDKr9d。如果不是,为什么不呢?对于无意赋值,unsigned>0以及上述愚蠢行为,这似乎是

c++ - 将外部错误代码映射到 std::error_condition

我正在考虑修改MS结构化异常到异常映射代码,我们必须使用新的C++11error_code/error_condition/exceptionmechanisim.我的理解是,一般的哲学是您应该首先尝试将错误代码映射到std::error_condition代码,否则,制作您自己的自定义error_condition代码。我看到的问题是std::errc非常适合处理POSIX错误。如果我从源代码中获取的代码与典型的操作系统调用具有完全不同的错误范围,那么它就不能很好地映射。例如,我们取Microsoft'sSEHcodes.这些来自操作系统,所以理论上它应该映射以及POSIX之外的任何

c++ - 场景 : Global variables in DLL which is used by Multi-threaded Application

几个月前,我遇到了一个人(在orkut上)问的这个有趣的场景。虽然,我已经针对这个问题提出了一个“不可移植”的解决方案(已经用小代码对其进行了测试),但仍然想知道你们有什么要说的和建议的。假设,我创建了一个DLL,导出一些功能,用C++编写,用于单线程客户端。这个DLL声明了很多全局变量,一些可能是const变量(只读),其他的是可修改的。无论如何,后来情况发生了变化,现在我希望同一个DLL与多线程应用程序一起工作(无需修改DLL);这意味着,多个线程从DLL访问函数和全局变量,并修改它们……等等。所有这些都可能导致全局变量持有不一致的值。所以问题是,我们能否在客户端代码中做一些事情来

c++ - std::promise 是否在内部使用 std::condition_variable 来通知关联的 std::future?

我的问题是std::promise是否通过使用std::condition_variable通知关联的std::future?我搜索了std::promise的源代码并找到了这个website.但是我没有看到std::promise在其成员数据中有std::condition_variable。 最佳答案 这是libc++的答案。搜索condition_variable在只返回一个结果://lines531--538class_LIBCPP_TYPE_VIS_LIBCPP_AVAILABILITY_FUTURE__assoc_sub

c++ - SFINAE - 尝试确定模板类型是否具有返回类型为 'variable' 的成员函数

SFINAE有问题。我需要能够确定Type是否定义了成员函数operator->而不管其返回类型。示例如下。测试器中的这个类。它定义了返回类型为X*的operator->()。因此,我将不知道“X”是什么以在任何地方对其进行硬编码。templateclassPointerX{...X*operator->()const;...}此类尝试确定传入的T是否定义了方法operator->;不管operator->的返回类型是什么。templatestructHasOperatorMemberAccessor{templatestaticRGetReturnType(R(C::*)()cons

c++ - 链接 : fatal error LNK1104: cannot open file 'libcpmt.lib' after manually configuring the LIB environmental variable

我正在尝试从命令行使用clVisualStudio2010编译器。由于某些原因,我安装的VisualStudio2010无法正确配置INCLUDE和LIB目录,请参阅YetanotherpostonfatalerrorC1034:noincludepathset.如果我跑`vcvars32.bat`我收到以下错误消息:ERROR:CannotdeterminethelocationoftheVSCommonToolsfolder.然后我尝试手动设置这些环境变量。所以我创建了一个简单的bat文件,如下所示:SetINCLUDE="C:\ProgramFiles(x86)\Microsof

java - 在 C、C++ 和 Java 中提升/重新排序 : Must variable declarations always be on top in a context?

我读了一点hoistingandreordering,所以看起来JavaVM可能会选择提升一些表达式。我还阅读了有关在Javascript中提升函数声明的信息。第一个问题:有人可以确认提升是否通常存在于C、C++和Java中?还是它们都依赖于编译器/优化?我读了很多示例C代码,这些代码总是将变量声明放在顶部,在任何断言或边界条件之前。我认为在变量声明之前完成所有断言和边界情况会更快一些,因为函数可以终止。主要问题:变量声明必须始终在上下文中位于最前面吗?(这里有提升吗?)还是编译器通过首先检查这些独立的断言和边界情况(在不相关的变量声明之前)来自动优化代码?这是一个相关的例子:void

c++ - 构造函数执行顺序/顺序 : dependent initialization of static variable (class instance) in a function

对于以下代码段:classBar{public:intx;inty;Bar(int_x,int_y){/*somecodeshere*/...}};classFoo{public:intx;inty;intz;Foo(Barb):x(b.x),y(b.y){z=someFunction(x,y);}};voidf(intx,inty){Barb(x,y);staticFoox(b);}intmain(){f(2,3);}在我看来,函数内的静态变量甚至应该在main()之前初始化。但是,Foo类型的静态变量x依赖于Bar类型的局部变量b。问题是:1)x的构造函数什么时候执行?即x是在第一

c++ - 提高可读性和可维护性 : omit < > for many variable declaration possible?

关闭。这个问题是opinion-based.它目前不接受答案。想改善这个问题吗?更新问题,以便可以通过editingthispost用事实和引文回答问题.5年前关闭。Improvethisquestion这个问题看起来很抽象。我将通过一个例子来提问。介绍假设我有多种类型的游戏对象。他们是子弹,火箭,敌人,区域,......它们都由池很好地创建、删除和管理,例如PoolpoolBullet;PoolpoolRocket;游戏逻辑将以Pool_Handle的形式管理对象,例如Pool_Handlebullet=poolBullet.create();Pool_Handlerocket=po