草庐IT

0x00000001

全部标签

c++ - 这段代码是做什么的 : static union MSVC_EVIL_FLOAT_HACK INFINITY_HACK = {{0x00, 0x00, 0x80, 0x7F}};

#ifndefINFINITY#ifdef_MSC_VERunionMSVC_EVIL_FLOAT_HACK{unsigned__int8Bytes[4];floatValue;};staticunionMSVC_EVIL_FLOAT_HACKINFINITY_HACK={{0x00,0x00,0x80,0x7F}};#defineINFINITY(INFINITY_HACK.Value)#endif我目前正在开始使用Chipmunk物理引擎并在头文件中找到它INFINITY用于为物体设置无限动量,但是我不明白上面这段代码的作用! 最佳答案

c++ - 在什么情况下 vtable 指针可以为空(或 0x1)?

我目前正在调试崩溃日志。发生崩溃是因为(c++-)对象的vtable指针是0x1,而据我从崩溃日志中可以看出,对象的其余部分似乎没问题。程序在尝试调用虚拟方法时崩溃。我的问题:在什么情况下vtable指针可以变为null?operatordelete是否将vtable指针设置为空?这发生在使用gcc4.0.1(AppleInc.build5493)的OSX上。 最佳答案 可能是内存践踏-错误地覆盖了vtable。在C++中有几乎无限多的方法可以“实现”这一点。例如,缓冲区溢出。 关于c+

c++ - 构建 PBRT v2 错误 - 错误 1 ​​错误 U1077 : 'if' : return code '0x1'

我有visualstudio2013社区版,我有pbrt-v2代码库,一直在尝试构建解决方案,但这是我遇到的错误之一(它似乎与nmake相关):NMAKE-Error1errorU1077:'if':returncode'0x1'我不确定该怎么做,因为其他说明似乎不是很清楚。任何帮助将不胜感激!谢谢你,祝你有美好的一天!------------更新--------------------我让它在visualstudio2013上编译和构建。问题是我认为我有过时的PBRT文件。基本上我所做的是通过github查看项目,我认为这应该可行,但后来我注意到你可以在网站上下载最新的pbrt-v2

C++0x 初始化列表示例

我想看看这个现有代码示例如何能够利用C++0x初始化列表功能。例子0:#include#includestructAsk{std::stringprompt;Ask(std::stringa_prompt):prompt(a_prompt){}};structAskString:publicAsk{intmin;intmax;AskString(std::stringa_prompt,inta_min,inta_max):Ask(a_prompt),min(a_min),max(a_max){}};intmain(){std::vectorui;ui.push_back(newAskS

c++ - g++ C++0x 枚举类编译器警告

我一直在将C++类型安全伪枚举的可怕困惑重构为新的C++0x类型安全枚举,因为它们方式更具可读性。无论如何,我在导出类中使用它们,所以我明确标记它们要导出:enumclass__attribute__((visibility("default")))MyEnum:unsignedint{One=1,Two=2};用g++编译它会产生以下警告:typeattributesignoredaftertypeisalreadydefined这看起来很奇怪,因为据我所知,该警告旨在防止实际错误,例如:class__attribute__((visibility("default")))MyCla

c++ - 是否有像 auto_ptr 和 shared_ptr 这样不需要 C++0x 的通用智能指针?

我想要一个非引用计数的智能指针,它可以结合auto_ptr和shared_ptr的一些有用方面。我认为C++0x的unique_ptr最终是我需要的,但我需要一些可以在VisualStudio2008和Xcode(gcc4.2)上编译的东西。我需要的功能是:可在工厂方法中使用,以便在复制时转移所有权(如auto_ptr)支持release()(比如auto_ptr)可与前向声明一起使用(如shared_ptr)所以,我认为它确实是一个更好的auto_ptr。在boost或其他地方有什么可以做到这一点的吗(注意:我没有时间把我的头缠在Loki周围)?还是我应该自己动手?编辑:我刚刚阅读了

c++ - 是否可以在 C++0x 中使用 auto 执行以下操作?

EricLippert写了一篇关于Whynovaronfields?的文章在C#中。我很好奇,我们能否在C++0x中做到这一点?例如。structmystruct_t{autoi=0,d=0.0,s=std::string("zero");};抱歉,我无法通过最新草稿得出答案。谢谢, 最佳答案 遗憾的是你不能。该规范在7.1.6.4/3中说明并遵循Otherwise,thetypeofthevariableisdeducedfromitsinitializer.Thenameofthevariablebeingdeclaredsha

通过引用传递的 C++0x 初始化列表

我曾尝试以这种方式使用C++0x初始化列表作为构造函数调用的参数:Foofoo("Foo1",std::vector({"fooA","fooB"}));与构造函数Foo(constchar*name,std::vector&foos)对于这个构造函数,编译器会报错:error:nomatchingfunctionforcalltoFoo::Foo(constchar[5],std::vector>)note:candidatesare:Foo::Foo(constchar*,std::vector>&)[withT=float]但是,当我将构造函数更改为Foo(constchar*n

C++0x:在 std::map 中存储任何类型的 std::function

我试图在映射中存储一组std::function(在GCC4.5下)我想要两种东西:存储参数已经传递的函数;那么你就有调用f()存储不带参数的函数;那么你必须打电话f(...)我想我用类命令和管理器实现了第一个:classCommand{std::functionf_;public:Command(){}Command(std::functionf):f_(f){}voidexecute(){if(f_)f_();}};classCommandManager{typedefmapFMap;public:voidadd(stringname,Command*cmd){fmap1.inse

c++ - C++0x 的库计划?

最近我对VC2010中对lambda的支持感到非常兴奋。我正慢慢开始领会此功能在将C++转变为更好的东西方面的​​全部潜力。但后来我意识到,这种潜力在很大程度上取决于boost和QT等日常库中对lambda的主流支持。有谁知道是否有计划使用C++0x的新功能扩展这些库?lambdas实际上取代了对boost::lambda以及boost中与其交互的所有内容的需求。QT可以在其所有容器中添加对lambda的支持,甚至可能作为定义SLOT的替代方法 最佳答案 Lambda已经非常适合现有的库-函数接受模板参数给定类型的函数对象的任何地方