[Windows编程] C++中 bool,BOOL ,VARIANT_BOOL 的区别

C++17核心特性解析:结构化绑定、optional与编译期编程实战 C++作为高性能系统编程语言,其标准演进始终围绕提升开发效率与代码安全性展开。从C++11的自动类型推导到C++17的工程化增强,现代C++致力于通过类型系统与编译期计算减少运行时错误。其核心原理在于利用静态检查与零开销抽象,在保持底层控制力的同时提供高级表达方式。技术价值体现在降低维护成本、提升团队协作效率,并能从根源消除数据竞争等隐晦Bug。应用场景广泛覆盖网络服务、基础设施库、游戏引擎及嵌入式系统,其中C++17的结构化绑定、std::optional等特性直接针对多返回值处理、空值表示等工程痛点。本 阅读详情

接上篇,继续讨论BOOL变量。 Windows 中BOOL变量常见的好几种类型:小写的bool,大写的BOOL ,还有VARIANT_BOOL 。

 

小写的bool 的是C++ 标准定义的布尔类型, 各个编译器处理的方式不同,Visual C++ 把bool 定为一个字节。小写的true 和 false 也都是C++ 标准定义的关键字。

 

大写的BOOL 是Windows 里面定义的布尔类型,实质上int, 在 windows 头文件面有定义:

 

typedef int BOOL;

#define TRUE 1
#define FALSE 0

VARIANT_BOOL 是COM 使用的布尔类型, 其实质上是 short 类型:

 

typedef short VARIANT_BOOL;

#define VARIANT_TRUE ((VARIANT_BOOL)-1)

#define VARIANT_FALSE ((VARIANT_BOOL)0)


可以看出, 3中BOOL类型的长度不一样,而且TRUE 和 FALSE 的值也不同,在相互转换的时候需要注意。

 

 

 

数据库常见面试题(附答案) 1.事务四大特性 原子性,要么执行,要么不执行 隔离性,所有操作全部执行完以前,其它会话不能看到过程 一致性,事务前后,数据总额一致 持久性,一旦事务提交,对数据的改变就是永久的 2.数据库隔离级别,每个级别会引发什么问题,mysql默认是哪个级别 脏读:事务B读取事务A还没有提交的数据 不可重复读:两次事务读的数据不一致 幻读:事务A修改了数据,事务B也修改了数据,这时在事务A看... 阅读详情

相关推荐

Cisco三层交换机的详细配置

** 本文适用于新手小白以及微微基础的同学来用于参考,实验是在Cisco Packet Tracer Student 进行,实验最终效果如图所示,所有命令配置与图中的一致。 使用到的机器型号为:五台电脑,一台服务器,三个普通交换机(2960型号),一个三层交换机(3560-24PS),两台普通服务器(2811) 文章目录一、什么是三层交换机二、配置交换机步骤1.配置二层交换机2.配置三层交换机3.配置两台路由器以及最后一台电脑 一、什么是三层交换机 1.三层交换机 = 三层路由+二层交换机 2.工作在

真正的大师,永远都怀着一颗学徒的心。 4万+

Windows编程知识要点总结五-数据类型问题(1)

五.数据类型问题1. BOOL和bool的区别1、类型不同 BOOL为int型 bool为布尔型2、长度不同 bool只有一个字节 BOOL长度视实际环境来定,一般可认为是4个字节 3、取值不同 bool取值false和true,是0和1的区别。BOOL是微软定义的typedef

bcfirstbobo的专栏 448

Unity中实现HLS视频加密与流式播放的完整方案

本文详细介绍了在Unity中实现HLS视频加密与流式播放的完整方案。针对Unity原生VideoPlayer无法直接支持实时解密的问题,提出了基于HLS协议与AES-128加密的成熟解决方案,并重点阐述了如何利用AVPro Video插件进行集成。文章涵盖了从密钥生成、使用FFmpeg进行视频加密切片,到在Unity中动态加载密钥并播放加密流的全流程,为保护付费课程、独家动画等视频内容提供了安全且高效的实践路径。

weixin_29290963的博客 393

古怪的VARIANT_BOOL类型

在进行MFC的ActiveX控件编程时,肯定会遇到布尔型的属性。在VC7中对应的内部类型为VARIANT_BOOL,实际上是一个short型的数据。实际使用过程中最容易碰到以下3个问题 1.在控件的DoPropExchange(CPropExchange*pPX)中需要调用PX_Bool函数,但是这个函数要求第3个参数为int型,可向导生成的变量就是VARIANT_BOOL型的,所以这里是需要进

XXX的专栏 3745

C++游戏开发入门:从环境配置到第一个完整项目

C++ 作为游戏开发领域的关键语言,其学习路径常因语法枯燥而令初学者却步。以项目驱动的方式学编程,能帮助学习者将变量、循环、函数、指针等基础概念融入实际游戏逻辑中,获得即时反馈与完整项目经验。掌握合适的开发环境是高效实践的前提,例如在 Windows 下使用 VS Code 搭配 MinGW-w64 编译器,配合调试器与构建脚本,即可搭建轻量可扩展的 C++ 游戏开发工作流。此类课程通常面向无基础人群,从控制台小游戏逐步过渡到带游戏循环的完整作品,过程中还需关注性能观察、素材授权与版本管理。无论你是刚接触编

weixin_30621959的博客 541

【5G演进】4G到5G演进之网络架构与协议栈

4G到5G演进之网络架构与协议栈

Learning makes me happy (0^◇^0) 5529

最简单的Windows win32 API 程序开发方法

第零章:准备好工具先开发一个小程序看看 第一步:找到我们所需要的所有原料 这里用到的原料都是从mingw中获取的,先安装一个mingw然后搜索安装目录找到下面几个文件: cc1.exe as.exe ld.exe mingw3...

737

MobaXterm结合SSH密钥对安全连接阿里云ECS的实战教程

本文详细介绍了如何使用MobaXterm结合SSH密钥对安全连接阿里云ECS的实战教程。通过对比传统密码登录的风险,重点讲解了密钥对的生成与配置、阿里云控制台的密钥绑定技巧,以及MobaXterm的高级设置和故障排查方法,帮助用户实现高效、安全的远程连接。

weixin_29208327的博客 466

VARIANT_BOOL与BOOL

现有一函数 int   fun(VARIANT_BOOL bFlag) 当bFlag为true时返回0; 如下调用  int iRetVal = fun(TRUE); 或者     int iRetVal = fun(1);都不能返回0; 但是在js中这样调用 var va = "1";  fun(va)则可以返回0 当时没仔细看参数类型,很是纳闷,同样一个函数,同样的参数,

zuiyuezhou888的专栏 5782

【AI智能体】QClaw 对接GitHub处理自动化任务实战操作详解

QClaw 对接GitHub处理自动化任务实战操作详解

congge 4867

FPGA面试题目笔记(一)——FPGA开发流程、亚稳态和竞争冒险、建立保持时间、异步FIFO深度等

同步异步电路、同步异步复位、时钟偏移和抖动、最小工作周期计算、触发器锁存器

H19981118的博客 1万+

C++中 bool,BOOL ,VARIANT_BOOL 的区别

C++中 bool,BOOL ,VARIANT_BOOL 的区别 1.小写的bool 的是C++ 标准定义的布尔类型, 各个编译器处理的方式不同,Visual C++ 把bool 定为一个字节。小写的true 和 false 也都是C++ 标准定义的关键字。 2.大写的BOOL 是Windows 里面定义的布尔类型,实质上int, 在 windows 头文件面有定义:

autumn20080101的专栏 1116

Claude Code 安装指南(Windows / macOS)

本文介绍了Claude Code的安装准备和基本流程。作为开发者工具,安装前需具备命令行操作能力、可用的Claude账号和稳定网络环境。Windows和macOS的安装都需通过终端完成,安装后以命令行形式运行。首次使用建议在熟悉项目中执行简单任务,逐步建立使用习惯。强调安装只是开始,后续需学习如何有效使用工具,包括任务提交流程和上下文提供方法。核心要点是:Claude Code是开发者工具,网络和终端环境是关键,建议先运行再深入理解。

sg_knight的专栏 4482

C++17核心特性解析:结构化绑定、optional与variant实战指南

在现代C++编程中,类型安全和代码简洁性是提升工程质量的核心诉求。C++17标准通过引入结构化绑定、std::optional和std::variant等特性,从语言层面系统性地解决了传统C++中多返回值处理、可选值表示和类型安全联合体等常见痛点。这些特性基于编译时类型检查机制,显著减少了样板代码和运行时错误,提升了代码的可读性和可维护性。在工程实践中,结构化绑定简化了std::pair和std::tuple的解包操作,std::optional为可能缺失的值提供了类型安全的容器,而std::variant

weixin_34320724的博客 277

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C++17核心特性实战:结构化绑定、optional、variant与string_view提升工程效率

在现代C++开发中,类型安全和代码简洁性是提升工程效率的关键。通过编译时类型检查与零拷贝优化,开发者可以构建更健壮、高性能的应用程序。C++17引入的结构化绑定(Structured Binding)允许直接从聚合类型解包变量,消除了繁琐的std::tie操作,使代码意图更清晰。std::optional提供了表达“可能有值可能无”的标准方式,替代了容易出错的特殊值或指针方案,增强了接口的清晰度和安全性。这些特性共同优化了资源管理、错误处理和数据解析等常见场景,让开发者能够以更现代的范式编写简洁且高效的C+

weixin_30681121的博客 367

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

C++17核心特性解析:结构化绑定、可选类型与编译期编程实战

在C++编程语言的发展历程中,类型系统和编译期计算是提升代码安全性与性能的核心机制。其原理在于通过编译器在代码生成阶段进行类型检查和优化,从而减少运行时开销并提前发现错误。这一技术价值体现在能够构建更健壮、高效且易于维护的软件系统。在泛型编程、资源管理以及高性能计算等应用场景中尤为关键。C++17标准引入了多项重要特性来强化这些方面,例如结构化绑定(Structured Bindings)通过简洁语法直接从复合类型中提取成员,提升了代码可读性;std::optional则提供了类型安全的可选值表达,有效替代

weixin_30813225的博客 347

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

C++工厂模式详解:三种形态、现代C++实践与面试要点

设计模式是软件工程中解决特定问题的经典方案,其中创建型模式关注对象创建与业务逻辑的解耦。工厂模式作为最常用的创建型模式之一,通过将对象创建过程封装到独立实体,帮助开发者减少硬编码依赖和重复分支。简单工厂、工厂方法、抽象工厂分别适用于不同复杂度场景,而结合VSCode与CMake工程环境,可以直观地看到如何用它们重构消息分发系统。更进一步,基于std::function与unordered_map的注册表工厂能实现零改动扩展,std::variant则带来编译期分派的性能优势。针对C++面试题中高频出现的开闭

weixin_34037173的博客 377

C++17入门

C++17 入门 语言核心:结构化绑定简化多值返回;强制拷贝省略优化对象构造;if constexpr 实现编译时分支;折叠表达式优雅处理参数包;CTAD 与推导指引简化模板实例化。类型安全容器:std::optional 表示可选值;std::variant 提供类型安全联合;std::any 支持类型擦除的动态值。工具库:string_view 实现非拥有字符串视图;filesystem 提供跨平台文件操作。性能增强:并行算法通过执行策略等等

Yusei_0523的博客 1460

C++编程艺术:从零到精通的系统学习路径与实践指南

编程语言作为计算机系统的核心表达工具,其设计哲学直接影响着软件的性能、安全性与可维护性。在众多编程范式中,面向对象编程通过封装、继承和多态三大特性,构建了模块化、可复用的代码结构,而内存管理则是保障程序稳定高效运行的基础。C++作为一门兼具高性能与灵活性的语言,其技术价值在于提供了对系统资源的精细控制能力,使得开发者能够在游戏引擎、高频交易、自动驾驶等对性能有极致要求的应用场景中构建核心系统。本文基于C++游戏开发和高频交易等热门领域需求,系统梳理了从基础语法、面向对象到现代C++特性的知识图谱,通过智能指

weixin_30596735的博客 353

C++17核心特性实战解析:从结构化绑定到并行算法的现代C++升级指南

在编程语言演进中,类型安全和代码表达力是提升软件质量的核心诉求。C++作为系统级编程语言,通过标准迭代不断引入新特性来解决工程实践中的常见痛点。C++17在C++11/14的基础上,聚焦于完善库支持、简化常见任务和提升类型安全,提供了如`std::optional`、`std::variant`等强类型工具,从原理上避免了空指针和未定义行为带来的风险。这些特性在需要明确处理“值缺失”或“多类型数据”的场景中具有重要技术价值,例如配置解析、状态机实现和错误处理。同时,`std::string_view`通过非

weixin_33860528的博客 343

AI编程助手在C++开发中的实战应用:从环境配置到算法实现

AI辅助编程已成为现代软件开发的重要趋势,它通过深度学习模型理解代码上下文,提供智能补全和代码生成能力。其技术原理基于大规模代码库训练,能够识别编程模式,提升开发效率。在工程实践中,AI编程助手尤其适用于解决算法实现、多线程编程和库集成等常见问题。例如,在C++开发中,开发者可以利用AI快速生成经典算法如中缀表达式转后缀表达式的实现,或辅助构建线程安全队列等并发数据结构。结合OpenCV等库时,AI能加速图像处理管道的搭建。通过合理配置开发环境并掌握精准提问技巧,开发者可以将AI作为高效的协作伙伴,应对C+

weixin_33910137的博客 655
上一篇: [编程技巧] C++中优化BOOL 变量的声明
下一篇: [IE技巧] 让IE 以全屏模式启动
西塞安全
博客等级 码龄20年 980粉丝 164原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值