草庐IT

handling-boolean-flag-options

全部标签

c++ - CreateFile 返回错误 INVALID_HANDLE_VALUE(对于 COM 端口),GetLastError 返回 "can' t 找到指定的文件”

我正在打开一个端口与设备通信并控制设备,但是CreateFile()函数返回INVALID_HANDLE_VALUE。GetLastError()返回2,这意味着它找不到指定的文件。我的代码如下所示:wsprintf(szPort,"COM%d",nPort);m_hIDComDev=CreateFile(szPort,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL|FILE_FLAG_OVERLAPPED,NULL);if(m_hIDComDev==INVALID_HANDLE_VALUE){

c++ - 尝试使用 boost::optional 失败

我一直在尝试将boostoptional用于可以返回对象或null的函数,但我无法弄清楚。这是我到目前为止所拥有的。任何有关如何解决此问题的建议都将不胜感激。classMyclass{public:inta;};boost::optionalfunc(inta)//ThiscouldeitherreturnMyClassoranull{boost::optionalvalue;if(a==0){//returnanobjectboost::optionalvalue;value->a=200;}else{returnNULL;}returnvalue;}intmain(intargc,

c++ - boost::optional 和类型转换

我想知道是否有一种优雅的方式来转换boost::optional到boost::optional什么时候B可以从A构建,尽管是明确的。这有效:#includeclassFoo{inti_;public:explicitFoo(inti):i_(i){}};intmain(){boost::optionali;...//igetsinitializedornotboost::optionalfoo;foo=boost::optional(bool(i),Foo(i.value_or(0/*unusedvalue*/)));return0;}但是需要将一些永远不会被使用的值放在那里似乎很尴

c++ - C/C++ : -msse and -msse2 Flags do not have any effect on the binaries?

我只是在玩弄gcc(g++)和编译器标志-msse和-msse2。我有一个看起来像这样的小测试程序:#includeintmain(intargc,char**argv){floata=12558.5688;floatb=6.5585;floatresult=0.0;result=a*b;std::cout当我用下面的语句编译它时:/usr/local/bin/g++-4.9-W-mssemain.cpp-otestsse和/usr/local/bin/g++-4.9-W-msse2main.cpp-otestsse2输出文件是二进制相等的。但由于SMID标志,我预计它们并不相同。所以

c++ - std::optional<std::reference_wrapper<T>> - 可以吗?

是std::optional>是否符合C++17的标准(或草案)?标准明确指出,引用类型的std::optional格式错误。但它是否包括reference_wrapper? 最佳答案 是的。那没问题。它不包括reference_wrapper因为reference_wapper不是引用类型。只有实际的引用类型是不允许的。 关于c++-std::optional>-可以吗?,我们在StackOverflow上找到一个类似的问题: https://stackov

c++ - 为什么忽略 std::optional 的强制转换运算符?

这段代码#include#includestructfoo{explicitoperatorstd::optional(){returnstd::optional(1);}explicitoperatorint(){return2;}};intmain(){foomy_foo;std::optionalmy_opt(my_foo);std::cout>(my_foo);std::coutproducesthefollowingoutputconstructor:2static_cast:2在Clang4.0.0和MSVC2017(15.3)中。(让我们暂时忽略GCC,因为在这种情况下它

c++ - 使用 atomic_flag 自旋锁进行内存排序

我正在尝试熟悉c++11的新内存排序概念,并且相信我实际上已经很好地掌握了它们,直到我偶然发现了自旋锁的这个实现:#includenamespaceJayZ{namespaceTools{classSpinLock{private:std::atomic_flagspin_lock;public:inlineSpinLock(void):atomic_flag(ATOMIC_FLAG_INIT){}inlinevoidlock(void){while(spin_lock.test_and_set(std::memory_order_acquire));}inlinevoidunlock

c++ - 什么是 boost::optional 效率?

我有以下内容:classObj;typedefstd::mapStrMap;std::map>complexMap;问题是,对于complexMap中的某些条目,StrMap将是空的,我根本不会使用它,因此为了提高效率,我正在考虑使用boost::optional。我的问题是boost::optional的效率如何,我担心付出代价最终会一无所获。 最佳答案 将optional视为可以容纳0或1值的容器。您的map已经是一个可以容纳0到N个元素的容器。因此,可选映射是一个容器中的容器,可以容纳0到N个元素。真的,这里没有任何好处。空m

c++ - 如何包装返回 boost::optional<T> 的 C++ 函数?

我想包装一个返回boost::optional的函数.也就是说,给定:classFoo{boost::optionalfunc();};我想以某种方式包装它,以便Python获得T按值,或None:class_("Foo").def("func",func,return_value_policy);通常如果它只返回一个T,我可以使用:class_("Foo").def("func",func,return_value_policy());但是因为它返回一个boost::optional,它也可以返回boost::none,我希望它最终成为Python的None.有没有办法用现有的转换器

c++ - WaitForMultipleObjects 和 boost::asio 在多个 windows::basic_handle 上有什么区别?

我有一个HANDLE列表,由许多不同的IO设备控制。之间的(性能)差异是什么:在所有这些句柄上调用WaitForMultipleObjectsasync_readonboost::windows::basic_handle'saroundallthesehandlesWaitForMultipleObjects是O(n)时间复杂度吗?n个句柄?您可以以某种方式在windows::basic_handle上调用async_read对吗?或者这个假设是错误的?如果我在多个线程中调用同一个IO设备上的运行,处理调用是否会在这些线程之间平衡?这将是使用asio的主要好处。