草庐IT

initial_condition

全部标签

c++ - 编译器 : What if condition is always true/false

我考虑条件和编译器。我正在为Arduino编写一个应用程序,因此我需要该应用程序尽可能快。在我的代码中我有这个:#defineDEBUGfalse...if(DEBUG){StringpinName;pinName="Pin";pinName+=pin;pinName+="initialized";Serial.println(pinName);}我想知道编译器是否不包含二进制文件中的代码(ifblock中的代码)。条件总是假的,所以程序永远不会去那里。从另一边。如果DEBUG为真怎么办?Arduino是测试条件还是编译器只在二进制文件中包含if的主体?我找到了这个网站https://

c++ - initializer_list 与 2013 中的双重删除

今天在我的项目中遇到了内存问题,其中一个类使用了c++11initializer_list。系统发出内存问题的信号:“dbgdel.cpp中的表达式_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)。我将代码简化为一个简单的示例,它不再抛出表达式,但问题在调试输出中变得明显。在我看来,这代码是正确的,它似乎也适用于g++。#include#include#include#include#include#include#include#includeusingnamespacestd;classB{public:chardata[256];B(conststri

c++ - 使用 std::mutex、std::condition_variable 和 std::unique_lock

我在理解条件变量及其在互斥锁中的使用方面遇到了一些问题,希望社区可以帮助我。请注意,我来自win32背景,所以我与CRITICAL_SECTION、HANDLE、SetEvent、WaitForMultipleObject等一起使用。这是我第一次尝试使用c++11标准库进行并发,它是programexamplefoundhere的修改版本.#include#include#include#include#include#include#includeint_tmain(intargc,_TCHAR*argv[]){std::queuenNumbers;std::mutexmtxQueu

c++ - std::initializer_list 构造函数

在这样的代码中:#include#include#includestructA{A(){std::couts){std::coutl){std::cout为什么叫std::initializer_list构造函数的规范?如果我们定义,例如,构造函数带有std::initializer_list,它会产生歧义编译错误。.这种构造的规则是什么,为什么它对std::initializer_list如此具体用数字作为模板参数? 最佳答案 如果一个类有一个初始化列表构造函数,那么{whatevergoeshere}表示通过{whateverg

c++ - 线程池实现 : condition_variables vs. yield()

我尝试用C++开发一个线程池,我想知道是在工作线程的主循环中让线程产生更好还是等待条件变量更好:voidworker_thread(void){//thisismoreorlesspseudocodewhile(!done){if(task_available)run_task();elsestd::this_thread::yield();}}对voidworker_thread(void){//thisismoreorlesspseudocodestd::unique_locklk(mutex_);while(!done){if(task_available)run_task();

c++ - 我可以使用 std::initializer_list 而不是大括号括起来的初始化程序来初始化数组吗?

我可以使用std::initializer_list对象而不是大括号括起来的初始化程序来初始化数组吗?众所周知,我们可以这样做:http://en.cppreference.com/w/cpp/language/aggregate_initializationunsignedcharb[5]{"abc"};//equivalenttounsignedcharb[5]={'a','b','c','\0','\0'};intar[]={1,2,3};std::arraystd_ar2{{1,2,3}};//std::arrayisanaggregatestd::arraystd_ar1={

c++ - "In class member initialization"功能是否已融入 C++11?

Inclassinitializationfeature,它允许在类本身内部初始化普通成员,structA{inta=0;//error:ISOC++forbidsin-classinitializationofnon-conststaticmember‘a’};这在最新的编译器gcc-4.6中出现错误(使用-std=c++0x)。此功能是否已纳入C++11标准或gcc仍然不支持? 最佳答案 是的,这在C++0x中是合法的。在N3290§12.6.2/8中有一个例子:structC{/*...*/intj=5;//OK:jhasth

c++ - C++11 中的 "member initializer"是什么?

我遇到了一个名为“成员初始化器”的奇怪概念。Here说:C++11addedmemberinitializers,expressionstobeappliedtomembersatclassscopeifaconstructordidnotinitializethememberitself.它的定义是什么?有没有一些例子来说明它的用法? 最佳答案 它可能是指类内成员初始化器。这允许您在声明点初始化非静态数据成员:structFoo{explicitFoo(inti):i(i){}//xisinitializedto3.1416int

c++ - 稍后添加 initializer_list 构造函数时,使用大括号初始化语法会改变构造行为吗?

假设我有这样的类(class):classFoo{public:Foo(intsomething){}};我使用以下语法创建它:Foof{10};然后我添加一个新的构造函数:classFoo{public:Foo(intsomething){}Foo(std::initializer_list){}};f的构造会发生什么?我的理解是它将不再调用第一个构造函数,而是现在调用初始化列表构造函数。如果是这样,这似乎很糟糕。为什么这么多人推荐使用{}语法而不是()进行对象构造,而稍后添加initializer_list构造函数可能会默默地破坏事情?我可以想象这样一种情况,我正在使用{}语法构造

c++ - 带有 initializer_list 的可选构造函数

这个特殊的构造函数采用初始化列表的目的是什么。有人可以举例说明这在什么时候有用吗?templateconstexprexplicitoptional(in_place_t,initializer_listil,Args&&...args);上面和这个有什么不同?templateconstexprexplicitoptional(in_place_t,Args&&...args);引用:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3793.html#optional.object.ctor附:不确定是使用c++14还是