首页

人们不会注意一个程序的内部变化

程序的内部变化和外部变化 有些人会经常向我抱怨:为什么这么多年过去了,计算器和记事本这两个小工具一点变化都没有? 实际上,它们确实改变了,只是你没有注意到而已。 如果你观察下你的记事本程序,你会发现它多了一些额外的菜单。 还有计算器这个程序也经历过很多次”大修”。 对于下面的用户反馈,我通常不会感到意外: “微软为什么要花很多时间使Windows操作看起来很酷?...

Visual Studio 2019中的IntelliSense改进  

是时候汇总一下了 在已经发布的几个Visual Studio 2019版本中,我们已经对C++ IntelliSense做了相当多的改进和完善。在今天的这篇文章中,我们会汇总这些改进要点,如果你对Visual Studio 2019感兴趣,或者希望在编写C++代码的时候更加有效率,欢迎继续阅读。 如果你一直看我们的博客更新,则应该对下面的一些要点会比较熟悉。我们希望这篇文章会给你带来帮助。 大部分...

官宣:用于MSVC的Address Sanitizer正式发布  

官宣一则 特别感谢Aaron Gorenstein对本文内容的贡献。特别感谢Kevin Cadieux和Jim Radigan的贡献。 我们非常高兴地宣布:C++ Address Sanitizer(ASan)在Visual Studio 2019 v16.9中正式可用。感谢那些在早期的测试版本中参加体验的开发者,是你们的反馈和建议帮助我们不断的去改善此项功能。 Address Sanitizer...

微软C++团队将出席ACCU 2021  

研讨会ACCU 2021来了 微软的C++团队成员Sy Brand和Erika SweetErika Sweet本周将会出席ACCU 2021。如果你有关于我们的演讲,产品或者其他任何方面的问题,请在虚拟会议室里告诉我们。同时,我们也欢迎你光临展览会的 #include <C++> 展示桌,了解有关于社区的更多信息。 Dynamic Polymorphism with Code Inj...

第二部分:关于析构函数何时执行  

让我们继续昨天的”故事” 下面是另外你必须小心留意析构函数执行顺序的例子。昨天的例子是讲述对象的析构函数在错误的时间点执行。今天,我们的主题是:对象析构函数压根就不会执行,这可不是你预先想到的情况,对吧? 假设,我们有一个ObjectLock类,它会在构造函数中获取锁对象,然后在其析构函数中释放它。如下图所示: 再一次地,上面的代码都是标准套路,看起来没有什么大的问题。代...

第一部分:关于析构函数何时执行  

C++: 一座看不见的冰山 Larry Osterman在他的博客中讨论全局对象析构函数执行时的细节,我想说的是,其实不仅是全局对象,对于局部对象来说,它的析构函数的执行时间点也十分重要,你需要谨慎地处理,方能确保安全。我们先考虑下面的代码: 代码看起来再简单不过了,但是请注意,上述代码蕴含Bug一枚。 问题:智能指针的析构函数何时运行? 答案:如果对象超出作用域,也就是在执行到最外层的if语句...

请提防哈希重置攻击

使用哈希值判断内容变更 真实世界中存在很多种不同的哈希算法,例如我们比较熟悉的MD5。这些算法的共同点是,它们会接收一份原文消息,然后产生一组基于消息原文的哈希值(散列),即使原文发生任何一丁点变化,则会引发哈希值的巨大变化,这样你就可以很容易地判断文件的哈希值来知道一个文件是否发生了变化,这种功能的实现是基于这样一个事实:现实中很难在不修改哈希值的情况下,实现对一个文件的修改。 但是 看起来这个...

VS2019中的远程调试支持  

先来一个长句 Visual Studio 2019提供了面向Windows和Linux目标平台的MSBuild和CMake工程的远程调试功能。 因为有了这个功能,我们可以有机会实现下面列出来的几个工作场景: > 在生产环境中直接进行调试,除了需要安装一些必要的远程调试辅助工具之外,你无需安装其他的开发工具。 > 可以在你不熟悉的开发环境中工作,例如,不同的操作系统,不一样的软件配置环境...

如何将个人代码库导入到vcpkg?  

非常感谢Nicole Mazzuca贡献了本文的内容。 你是否正在开发一个依赖于其他库代码的C++工程呢?长年累月地使用各种”胶水脚本”和git submodules来维护库代码的各种”花样”构建是否让你心生疲倦? 是时候试试包管理器了! 也许你之前听人说到过”vcpkg”,看起来这个工具非常适合你的开发团队,但是有一个问题:...

界面设计一二事

一个问题 有时候,我们会在Windows桌面应用的菜单或者按钮的文字后面,看到三个点”…”,这个是什么意思? 举个例子 在一个桌面程序的菜单中有个”另存为…”,或者有个按钮显示为”自定义…”。这些用户控件文字后面的三个点在什么情况下会出现呢? 很多人会说:如果应用即将显示一个对话框,就会使用...