微软也会错,后置++很危险!

CATIA Automation 编程初探 最近开始对 CATIA 进行一些自动化的开发,本来想找 CAA 来进行研究,可惜一直没时间和机会去找,暂时就利用 CATIA  Automation 来开发了。   由于利用 VB 或 VB.NET 将CATIA 脚本转化为程序确实方便,不过利用C++来操作更适合于我这种开发者。   方法有好多种,这里以画圆作为一个简单例子。   1 利用 IDispatch 接口来编程 阅读详情
    // Line 11: set screen = doc . parentwindow . screen 
    level=0;//因为是代码片段,我特意加了初始化,以防歧义原来发生代码中没有的
    VariantCopy(&root[++level], &doc);//拷贝doc内容到root[++level]
    AutoWrap(DISPATCH_PROPERTYGET|DISPATCH_METHOD, &root[level+1], root[level++].pdispVal, L"parentwindow", 0);//可以看成root[level++].parentwindow对象赋值给root[level+1]
   //下面的可以不看
    AutoWrap(DISPATCH_PROPERTYGET|DISPATCH_METHOD, &rVal, root[level].pdispVal, L"screen", 0);
    VariantClear(&root[level--]);
    VariantClear(&root[level--]);
    VariantCopy(&screen, &rVal);
    VariantClear(&rVal);

上面的代码来自微软的VB to VC automation Code Converte

大家是不是认为
1、VariantCopy(&root[++level], &doc)是doc对象赋值给root[1]
2、root[1].parentwindow对象赋值给root[2]
其实,我也是这样想的,但是经过跟踪发现root[1].parentwindow对象赋值给了root[3]。

环境:VS2008+Win7

结果是:在第一个AutoWrap中,传给root[1].parentwindow对象赋值给root[3],

事实,我们忽略的一点,根据C++ primer,后置++只是通过返回一个++之前的原值,带来延时++的效果,通过优先级再有差异也是在也是在

[level++]这个括号之中完成的,那么root[level+1], root[level++].pdispVal中的level到底在上面时候++的,level+1之前,还是之后?这个过程,必然在AutoWrap传入压栈参数之前完成,到底谁先谁后?,不知道!在http://blog.youkuaiyun.com/blankman/article/details/149206作者给我指明了方向:没有明确顺序!所以,root[level+1]中的level是多少,完全看编译器和优化的过程了。

微软的VB to VC automation Code Converte估计自己也忽略了。当下面的代码第二个AutoWrap继续引用root[level].pdispVal是自以为是在操作第一个AutoWrap中的root[level+1]取回的对象,实际上,确实在操作一个完全悬空的对象root[2],而第一个AutoWrap取回的对象其实放在了root[3]中。结果就是第二个AutoWrap一直错啊一直错。

编程考古-Visual J++ 6.0的陨落:一场关于技术主权与生态控制的战争,Anders谈Visual J++失败的原因 这种“一次编写,到处运行”的语言似乎预示着跨平台时代的降临,而微软的入局被视为对未来的重要押注。然而到了2001年,Visual J++ 6.0却成为微软历史上最短命的开发工具之一,其消亡不仅标志着一款产品的失败,更揭示了技术战争中一个永恒的真理:谁掌握技术主权,谁就掌握生态的咽喉。当Sun的法律团队在法庭上展示Visual J++生成的.class文件时,一个残酷的现实被揭开:这些字节码只能在微软的JVM上运行,与Sun的官方实现存在系统性偏差。这种战略转向的背后,是微软对“技术主权”认知的升华。 阅读详情

相关推荐

Dism++系统维护工具:从镜像还原到高级应用全解析

DISM(Deployment Image Servicing and Management)是微软提供的系统镜像部署与管理核心技术,作为Windows ADK的核心组件,它支持.wim/.esd格式镜像的创建、修改与部署。Dism++通过图形化界面将这项企业级技术平民化,在系统备份还原、驱动管理、补丁集成等场景展现出工程实践价值。特别是在PE环境下,工具支持增量备份、NVMe驱动注入、WinSxS深度清理等进阶操作,配合DiskGenius分区检测、引导修复等配套工具,能有效解决系统部署中的4K对齐、引导

weixin_33728708的博客 312

Variant拷贝与Object的相等判断

最近在调试代码时,发现代码中在进行赋值或相等判断时,不少直接采用赋值操作符=、相等判断==进行处理,但实际上,这样做是存在风险的。 Variant拷贝请使用VariantCopy或直接采用CComVariant的赋值运算符、Copy方法,慎用Variant的=操作符 #include <iostream>#include<variant>#include<OAIdl....

qq_39116201的博客 554

远离破解版软件陷阱:Notepad++官方免费与安全替代方案全解析

在软件开发与文本编辑领域,软件授权与安全性是基础而关键的概念。从技术原理看,破解版软件通常通过修改二进制文件或内存补丁绕过授权验证,但这破坏了代码完整性校验机制,极易引入安全漏洞。其技术价值为负,不仅无法获得正版软件的稳定更新与技术支持,反而成为恶意代码的载体。常见的应用场景中,用户因追求免费或便捷而搜索“Notepad破解版”,却可能遭遇捆绑恶意软件、隐私窃取或系统破坏等风险。实际上,Notepad++作为开源软件,其官方版本完全免费且安全,而Visual Studio Code等现代编辑器也提供了强大的

weixin_29325515的博客 1117

VC常用数据类型转换

VC字符串转换[转]一、BSTR、LPSTR和LPWSTR   在Visual C++.NET的所有编程方式中,我们常常要用到这样的一些基本字符串类型,如BSTR、LPSTR和LPWSTR等。之所以出现类似上述的这些数据类型,是因为不同编程语言之间的数据交换以及对ANSI、Unicode和多字节字符集(MBCS)的支持。  那么什么是BSTR、LPSTR以及LPWSTR呢?  BSTR(B

709

VCSA的vmware-updatemgr服务无法启动和vSAN界面报“certificate chain is not trusted and thumbprint doesn‘t match”处理

"Unable to update CM service info"和"Server certificate chain is not trusted and thumbprint doesn't match"问题处理

jetliu05的博客 1882

传感器:MQ-5燃气模块测量燃气值(底部附代码)

本篇文章介绍使用MQ-5燃气模块测量燃气值,CPU还是选择单片机,MQ-5主要使用的技术为ADC,燃气对于单片机来说是模拟信号,需要转换为数字信号,再经过相关计算公式将燃气模拟值转换成对应的燃气数值,便于人们方便查看。例如家庭使用燃气模块测量燃气值,如果燃气值超过一定的范围,可以外设一个报警装置,保证家庭的生命安全。(1)ADC(analog to digital converter)即模数转换器,它可以将模拟信号转换为数字信号。按照其转换原理主要分为逐次逼近型、双积分型、电压频率转换型三种。STM32F1

Mr_zhang1911116的博客 1万+

VARIANT 与 CComVariant 的使用

VARIANT是COM中,为了传递未知的数据类型,或者为了传递可变的数据类型,而引入的一种结构体。这种结构拥有自己解释所包含的数据类型的能力。     VARIANT有一个变量vt, 类型为VARTYPE,指定了数据类型:比如:VT_I2,VT_I4,VT_R4,VT_R8等,分别表示short,long,float,double,    对应的值分别存在iVal,lVal,fltVal,db

lambition的专栏 1896

STM32鱼塘水质监测系统设计与实现

物联网技术在农业领域的应用正逐步深入,其中传感器网络作为关键基础设施,通过实时数据采集与传输实现环境监测。基于STM32微控制器的嵌入式系统因其高性能和低功耗特性,成为物联网终端设备的理想选择。该系统通过DS18B20水温传感器、PH传感器和浊度传感器组成的多参数检测网络,配合4G通信模块实现水质数据的远程监控。在农业物联网场景中,这种解决方案不仅大幅降低了传统人工检测的成本,更能通过实时预警有效预防养殖损失。本文介绍的鱼塘水质监测系统正是这一技术的典型应用,展示了如何通过STM32和常见传感器构建高性价比

weixin_42173218的博客 620

调用COM来实现在最后一个Worksheet后插一个新的Worksheet

// InsertAfterSheets.cpp : Defines the entry point for the console application. // #include "stdafx.h" HRESULT AutoWrap(int autoType, VARIANT *pvResult, IDispatch *pDisp, LPOLESTR ptName, int cArg

红泥屋 946

VMware ESXi 直通GPU

虚拟机需要独享GPU资源,那么就需要用到DirectPath I/O (直通),ESXi hypervisor 把 GPU 设备直接映射成虚机中的 GPU 设备,供应用使用。注意,内存注意一定要勾选预留,否则开机后报错如下:无法打开虚拟机 win10 的电源。1.ESXi主机,管理,硬件,PCI设备,勾选GPU卡,切换直通,会提示要求重启主机,重启主机之后,该GPU设备直通一栏显示为“活动”。先确认虚拟机是否EFI引导:编辑虚拟机 - 虚拟机选项 - 引导选项 - 固件 - EFI。

liwension的博客 6293

2023.03.27更新大麦网PC端抢购软件和使用教程

近期发现大麦网页端抢购页面悄然发生变化,之前可以在页面选择票价、档次,并且点击按钮进行购票,现在不行了,新的页面如下图所示。已经安全没有了点击按钮,因此,但是并不代表不能像以前之前那样。

猫敷雪 1万+

微软计划使用 Rust 取代 C和C+

新智元推荐 来源:InfoQ 作者:王文婧 【新智元导读】微软近日提出,未来将使用 Rust 作为 C、C++ 以及其他编程语言的替代方案,以改善应用程序的安全性的计划。 近日,微软安全响应中心(MSRC)团队在官网更新文章,就近日提出的最新计划,即未来将使用 Rust 作为 C、C++ 以及其他编程语言的替代方案以改善应用程序的安全性的计划,从空间内存安全、时间内存安全、数据竞...

ctrigger的专栏 5674

SerDes电路的PCB仿真设计规则及策略

SerDes的PCB设计中,重点工作是使用3D 电磁 (EM) 场求解器,进行过孔结构优化,包括 BGA的扇入和扇出区域以及布线的过孔区域,并且,利用连接器供应商提供加密的 3D 模型,进行连接器和 PCB 的级联仿真,最终获取系统级的通道性能参数,如插入损耗、回波损耗、串扰和模式转换、阻抗曲线等,如果发现任何缺陷,再进行进一步优化,这一过程中,推荐进行拆分仿真,以提高设计效率。

一只豌豆象的博客 2191

曾想干掉Java的微软正式加入OpenJDK,意欲何为?

近日, 微软的Bruno Borges 向OpenJDK的邮件列表发了一封信, 宣称微软已经正式签署了Oracle Contributor Agreement ,从而加入OpenJDK社...

hailang2ll的专栏 303

蓝牙功耗优化实战:连接蓝牙耳机时高耗电问题的深度排查与解决

连接任意一款蓝牙耳机, 进行插入实网SIM卡, 同时连接蓝牙耳机后, 进入IDLE模式, 测试时间为10分钟的测试结果, 平均电流毫安在8左右. 测试结果1: 平均电流 8.84mA 测试结果2: 平均电流 7.39mA 厘清问题: 由于出现上两幅图中 绿色线圈中的 20mA 左右高耗电时段, 从而将整体的平均电流抬高. 于是在记录IDLE下电流出现绿色线圈中的 20mA 左右高耗电时段, 同时录制UART1 Catcher log. Filter: MOD_BT/MOD_ATC.

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 1001

Close-By Site Assignment,门店近邻关系在 SAP Retail 物料搜索里的真实价值

SAP零售模块中的"Close-By Site Assignment"功能常被低估,但它在门店现场业务中极为关键。该功能允许预先定义各门店间的近邻关系,当导购或店长查询商品时,系统会自动展示附近门店的库存、价格和促销信息。与单纯的地理距离不同,这种近邻关系可基于调拨频率、业务关联度等业务逻辑定义。维护入口在事务码WSD_CBP中,支持按应用场景(如销售、采购)分别设置不同近邻关系。该功能不同于组织结构,专注于增强搜索体验,特别适合多门店运营场景,能有效提升跨店查询效率。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4851

Dism++官网下载和安装图文教程(附安装包,保姆级)

Dism++是一款国产免费Windows优化工具,通过图形化界面封装微软DISM工具功能,提供系统清理、修复等实用功能。其垃圾清理能力尤为突出,可清除Windows更新残留等系统垃圾,实测比CCleaner多清理4.3GB空间。软件仅5MB大小,免安装绿色运行,支持Win7到Win11系统,无广告不捆绑。使用时需谨慎选择带有警告标记的选项,避免删除重要系统文件。除垃圾清理外,还提供启动项管理、驱动更新等功能,是Windows平台少有的轻量级优化工具。

mozhiyan2的博客 5948

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Dism++下载安装教程:图文讲解与详细使用指南

Dism++是一款基于微软DISM技术开发的图形化系统优化工具,能够帮助用户深度清理Windows系统垃圾、管理驱动和更新、优化启动项等。本文提供了详细的下载安装教程,包括获取官方版本、解压运行以及主要功能使用说明。该工具支持Win7-Win11系统,以轻量级体积实现专业级系统维护功能,且运行稳定高效。文章还给出了使用建议和常见问题解答,强调其安全性及操作注意事项。通过Dism++,用户无需复杂命令即可完成系统优化维护,是替代传统清理工具的理想选择。

2401_89926894的博客 2318

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

ISO C++委员会主席萨特,本周微软离职,已效力22年!揭秘C++26标准:白宫压力下历史上最大一次变革,C++在微软进展缓慢

这一点并非空穴来风,根据谷歌的数据,内存安全漏洞约占零日漏洞的 75%,并且在大型代码库中的严重漏洞中,约 70% 都源于此类漏洞。C++ 中一些最大的内存安全漏洞是从 C 继承的。萨特在9月的CppCon会议上表示,“C++ 26标准可能会改变我们开发软件的方式”,并将成为自C++11以来对语言影响最大的一次变革。萨特在本周的博客中提到,上一个里程碑C++11版本为现代C++引入了auto、lambda表达式和智能指针等特性,而C++ 26的特点将是“默认安全”以及对基于反射的生成型编译时库的全面支持。

IT界那些事儿 2120

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

C#的来历

网上也有很多关于C#的传说,今天给大家整理一下,抛砖引玉吧,有说得不对的地方,大家评论指出,我虚心改正。 说起C#的来历,就不得不提及在它诞生之前,各大公司之间的纷争。 1975年微软公司成立,刚开始它并不是做操作系统的,而是做PC编程软件的,我们熟知的BASIC,就是比尔盖茨把它移植到了PC上。记得80年那会小霸王学习机上还有BASIC。 1980年,IBM选择微软为其编写操作系统,当然很大原因是因为盖茨他妈是IBM的董事会成员。这以后微软的BASIC一直就是PC编程界的老大,直到Borland

Heibai_yuheibai的博客 2143

如何用Dism++彻底解决Windows系统臃肿问题:从卡顿到流畅的完整指南

你是否曾经历过这样的场景:电脑开机越来越慢,C盘空间莫名消失,系统更新频繁失败,重装系统又怕丢失重要数据?这些问题困扰着无数Windows用户,而Dism++正是为解决这些痛点而生的神器。作为微软DISM工具的图形化增强版本,Dism++将复杂的系统维护操作简化为一键式解决方案,让你轻松应对Windows系统的各种"疑难杂症"。 ## 问题篇:Windows系统常见的三大痛点 ### 痛点一:

gitblog_00957的博客 133

别再乱点.bat文件了!手把手教你用Notepad++安全分析那段“整活”病毒代码

本文教你如何使用Notepad++安全分析可疑的.bat病毒代码,避免电脑中毒风险。通过搭建虚拟机沙盒环境、识别高危命令和代码混淆技巧,让你在安全环境下学习批处理脚本的真实意图,提升安全防范意识。

weixin_30565199的博客 430

WiFi-CSI-Sensing-Benchmark训练实战10个技巧:常见报错、环境坑与参数调优完整指南

**WiFi-CSI-Sensing-Benchmark**(SenseFi)是一个基于 PyTorch 的开源 WiFi CSI 人体感知基准库,内置 MLP、CNN、RNN、Transformer 等 11 种主流模型,覆盖 UT_HAR、NTU-Fi、Widar 等 4 个公开数据集,支持监督学习与自监督学习(AutoFi)两种训练方式。本文将分享 10 个训练实战技巧,帮你快速避开环境坑、

gitblog_00229的博客 152

【译】How Microsoft Lost the API War

这是你最近听到的一个理论:“微软已经完成了。 一旦Linux在桌面上取得一些进展,Web应用程序取代桌面应用程序,强大的帝国就会倒下。“ 尽管Linux对微软来说是一个巨大的威胁,但事实确实存在一些事实,但至少可以说,雷德蒙德公司即将灭亡的预测还为时过早。 微软在银行拥有大量现金,而且仍然非常有利可图。 它还有很长的路要走。 在它开始处于遥远的危险之前,它可以做出一切错事,而且你永远不会知道.....

omnispace的博客 566

研究如何在程序中使用microsoft speech sdk_演进中的.NET Core基础设施

The Evolving Infrastructure of .NET Core | .NET Blog​devblogs.microsoft.com随着.NET Core 3 Pre 6走出家门(下称DNC),我们觉得应该回顾下我们的构建基础设施进化史,以及最近一年做的重大提升。如果你对构建基础设施有兴趣,或者想看看我们是如何构建DNC这样的庞然大物的话,这个帖子会很有意思。这篇文章不会提到新特...

weixin_39760689的博客 321
上一篇: 探讨《如何在MFC设计超链接控件类》
下一篇: iPhone中BigBoss源添加以及SBSettings安装。
darkread
博客等级 码龄25年 42粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值