草庐IT

bool_test

全部标签

c++ - C++中的bool是什么?

我遇到了一些非常有趣的代码,这让我想知道bool是什么。我一直认为它是原始类型,例如int或char或long。但是今天,我看到了这样的东西:voidboolPtrTest(){boolthisBool=true;boolPtrHere(thisBool);printf("thisBoolis%s\n",thisBool?"true":"false");}voidboolPtrHere(bool&theBool){theBool=false;//uhh,dereferencinganyone?}这段代码运行-没有错误-并打印“thisBoolisfalse”!为了让这更奇怪,我运行了以

c++ - 标准 C++ 中是否有固定宽度的 bool 类型?

据我所知,bool类型的宽度是实现定义的。但是是否有任何固定宽度的boolean类型,或者我应该坚持使用,例如,uint8_t来表示固定宽度的bool?[编辑]我制作了这个自动生成C++类的python脚本,它可以保存我希望能够在微Controller和我的计算机之间发送的变量。它的工作方式是它还保留两个数组,其中包含一个指向这些变量中的每一个的指针以及每个变量的大小。这为我提供了必要的信息,可以轻松地序列化和反序列化这些变量中的每一个。但是,为了使其起作用,变量类型的sizeof、endianness等必须在两侧相同,因为我在两侧使用相同的生成代码。我不知道这是否会成为一个问题,但我

c++ - 如果两个线程同时访问同一个 bool 变量会发生什么?

我有一个跨平台的C++程序,我在其中使用boost库创建一个异步计时器。我有一个全局变量:boolreceivedInput=false;一个线程等待并处理输入stringargStr;while(1){getline(cin,argStr);processArguments(argStr);receivedInput=true;}另一个线程运行一个计时器,每10秒调用一次回调。在该回调中,我检查是否收到消息if(receivedInput){//setuptimertofireagainin10secondsreceivedInput=false;}elseexit(1);这样安全吗

c++ - 定义 BOOST_TEST_DYN_LINK 会导致应用程序在 Visual Studio 中崩溃

在boost单元测试文档中,它明确指出您需要定义BOOST_TEST_DYN_LINK为了与boost单元测试库链接。我正在使用这个基本示例:#defineBOOST_TEST_DYN_LINK#defineBOOST_TEST_MODULEtest_module1//Thisheaderisforthedynamiclibrary,nottheheaderonlyone#includeBOOST_AUTO_TEST_CASE(test1){BOOST_CHECK(true);}我已将boost添加到我的包含/库路径并且代码编译正常,但是当我使用VisualStudio编译boost单

c++ - 双 bool 否定运算符

这个问题在这里已经有了答案:DoubleNegationinC++(14个答案)doublenegationinC:isitguaranteedtoreturn0/1?(2个答案)关闭4年前。我从MicrosoftimplementationofGSL中看到这段代码(C++指南支持库):#ifdefined(__clang__)||defined(__GNUC__)#defineGSL_LIKELY(x)__builtin_expect(!!(x),1)#defineGSL_UNLIKELY(x)__builtin_expect(!!(x),0)#else#defineGSL_LIKE

c++ - Gtest : test compiling error

我正在尝试测试我用googletest编写的电机控制库,但我没有编译测试代码。测试位于名为test.cpp的文件中,如下所示:#include#include"../motor.hpp"TEST(constructorTest,contructorDefault){}我将测试主函数放在另一个名为main.cpp的文件中。#include#include"../motor.hpp"intmain(intargc,char*argv[]){::testing::InitGoogleTest(&argc,argv);RUN_ALL_TESTS();}为了编译,我执行了以下行:g++main.

c++ - Bools 的填充结构的大小

如果1个bool是1byte[8位]那么4个bool的压缩结构是32位还是4位?pack指令删除了对齐要求,但它会使bool集合更有效[内存方面]吗? 最佳答案 是的。即使是bool值的压缩结构,每个bool值也至少使用8位。除非你使用bitfields. 关于c++-Bools的填充结构的大小,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4035729/

c++ - 当使用 bool 值构造字符串对象时,发生了什么类型转换?

在我的代码中,有一个拼写错误:在初始化std::string对象时,我没有使用"false",而是输入了false(这是一个bool)。现在这并没有报告任何编译错误。但稍后在我的代码中,当使用这个字符串对象时,我在运行时得到std::logic_error。谁能解释一下,为什么在这种情况下允许构造(否则我会收到编译错误并在那里发现问题)?这是一个小片段-#includeintmain(){std::stringstr=false;std::cout我在运行时得到的o/p-xhdrdevl8@~/MYBACKUP=>g++-otest_string-gtest_string.cxxxhd

c++ - bool 数组的最小尺寸实现

我需要一个bool数组的最小尺寸实现。数组的大小在编译时已知。我检查了std::bitset和boost::array,但它们都会产生对小数组来说很重要的开销。例如,如果数组大小为8,则容器应仅使用1字节内存(假设是普通CPU架构)。这是否存在,还是我需要自己推出? 最佳答案 您可以自己制作,但不能从头开始。bitset实现应该有几行看起来像typedefunsignedlong_WordT;(SGI)或typedef_Uint32t_Ty;(MSVS)。您可以小心地替换类型和命名空间,并以此方式制作您自己的容器。我将类型更改为ch

c++ - Boost 程序选项 bool 总是 True

通过程序选项,我正在检查参数的有效组合。但出于某种原因,gpu参数是一个bool,无论我是否在命令行上将其设置为false,它始终为true。如果我在命令行上指定了gpu选项,有没有办法让它为false?我希望能够创建一个bool变量来表示是否使用了命令行上的选项。我也找不到任何关于variables_map的count()的文档。它是std::map函数吗?部分代码:namespacepo=boost::program_options;po::options_descriptiondesc("AllowedOptions");desc.add_options()("help,h","