草庐IT

UINT_PTR

全部标签

c++ - 将 uint32_t 转换为 uint64_t 会产生不同的值?

使用VisualStudio2015C++,14.0.25431.01更新3。我的代码中有意外行为。64位编译运行,发布:#include#includeintmain(int,char**){for(uint32_ti=1;i我希望a和b具有相同的值,但是当我运行它时,我会得到以下输出:422483803732bit422483803764bit415470877832bit844967607464bit看起来编译器将32位乘法替换为64位乘法。是否允许这样做,或者这是一个编译器错误?g++和clang都给出了我期望的数字。编辑:我已经使用具有相同问题的更简单版本更新了我的代码。另外

c++ - 将 std::unique_ptr 返回到多态类对象的正确方法

假设我有以下类层次结构:structBase{};structDerived:publicBase{voidDoStuffSpecificToDerivedClass(){}};还有以下工厂方法:std::unique_ptrfactoryMethod(){autoderived=std::make_unique();derived->DoStuffSpecificToDerivedClass();returnderived;//doesnotcompile}问题是,return语句无法编译,因为std::unique_ptr没有支持协方差的复制构造函数(这是有道理的,因为它没有有任何

c++ - 将 std::unique_ptr 返回到多态类对象的正确方法

假设我有以下类层次结构:structBase{};structDerived:publicBase{voidDoStuffSpecificToDerivedClass(){}};还有以下工厂方法:std::unique_ptrfactoryMethod(){autoderived=std::make_unique();derived->DoStuffSpecificToDerivedClass();returnderived;//doesnotcompile}问题是,return语句无法编译,因为std::unique_ptr没有支持协方差的复制构造函数(这是有道理的,因为它没有有任何

c++ - unique_ptr 和多态性

我有一些当前使用原始指针的代码,我想更改为智能指针。这有助于以各种方式清理代码。无论如何,我有返回对象的工厂方法以及调用者管理它们的责任。所有权不共享,所以我认为unique_ptr是合适的。我返回的对象通常都派生自一个基类Object。例如,classObject{...};classNumber:publicObject{...};classString:publicObject{...};std::unique_ptrState::NewNumber(doublevalue){returnstd::unique_ptr(newNumber(this,value));}std::u

c++ - unique_ptr 和多态性

我有一些当前使用原始指针的代码,我想更改为智能指针。这有助于以各种方式清理代码。无论如何,我有返回对象的工厂方法以及调用者管理它们的责任。所有权不共享,所以我认为unique_ptr是合适的。我返回的对象通常都派生自一个基类Object。例如,classObject{...};classNumber:publicObject{...};classString:publicObject{...};std::unique_ptrState::NewNumber(doublevalue){returnstd::unique_ptr(newNumber(this,value));}std::u

c++ - 在嵌入式环境中替代 boost::shared_ptr

我在具有GCC版本2.95的嵌入式linux环境中使用C++。我无法用bcp提取boost::shared_ptr文件,它太重了。我想要的是boost::shared_ptr的简单智能指针实现,但没有所有boost开销(如果可能的话......)。我可以想出我自己的版本阅读boost源,但我担心会漏掉一个或多个点,制造一个错误的智能指针似乎很容易,而且我不能承受有错误的实现。那么,boost::shared_ptr(或任何引用计数等效智能指针)的“简单”实现或实现示例是否存在我可以使用或可以作为灵感的? 最佳答案 如果您不需要混合s

c++ - 在嵌入式环境中替代 boost::shared_ptr

我在具有GCC版本2.95的嵌入式linux环境中使用C++。我无法用bcp提取boost::shared_ptr文件,它太重了。我想要的是boost::shared_ptr的简单智能指针实现,但没有所有boost开销(如果可能的话......)。我可以想出我自己的版本阅读boost源,但我担心会漏掉一个或多个点,制造一个错误的智能指针似乎很容易,而且我不能承受有错误的实现。那么,boost::shared_ptr(或任何引用计数等效智能指针)的“简单”实现或实现示例是否存在我可以使用或可以作为灵感的? 最佳答案 如果您不需要混合s

c++ - 将 UINT16 值转换为 UINT8 数组[2]

这个问题基本上是我其他Question的后半部分如何将UINT16值转换为UINT8*数组而无需循环并避免字节序问题。基本上我想做这样的事情:UINT16value=0xAAFF;UINT8array[2]=value;这样做的最终结果是将值存储到UINT8数组中,同时避免字节序转换。UINT8*mArray;memcpy(&mArray[someOffset],&array,2);当我简单地使用UINT16值执行memcpy时,它会转换为little-endian,这会破坏输出。我试图避免使用字节序转换函数,但我想我可能只是不走运。 最佳答案

c++ - 将 UINT16 值转换为 UINT8 数组[2]

这个问题基本上是我其他Question的后半部分如何将UINT16值转换为UINT8*数组而无需循环并避免字节序问题。基本上我想做这样的事情:UINT16value=0xAAFF;UINT8array[2]=value;这样做的最终结果是将值存储到UINT8数组中,同时避免字节序转换。UINT8*mArray;memcpy(&mArray[someOffset],&array,2);当我简单地使用UINT16值执行memcpy时,它会转换为little-endian,这会破坏输出。我试图避免使用字节序转换函数,但我想我可能只是不走运。 最佳答案

c++ - 我应该在移动构造函数中 std::move 一个 shared_ptr 吗?

考虑:#include#include#include#include#include#includeusingnamespacestd;classGizmo{public:Gizmo():foo_(shared_ptr(newstring("bar"))){};Gizmo(Gizmo&&rhs);//ImplementedBelowprivate:shared_ptrfoo_;};/*//doesn'tusestd::moveGizmo::Gizmo(Gizmo&&rhs):foo_(rhs.foo_){}*///Doesusestd::moveGizmo::Gizmo(Gizmo&