Visual Studio 2017 更新后“无法打开源文件”的解决方法

有时候我们更新完 Visual Studio 以后,原先的项目可能就不能正常编译了。可以发现,标准头文件不能被正常包含,提示无法打开源文件,如下图: 这种情况的出现往往是因为更新了 Windows SDK 的版本,旧项目文件中保存的还是老 SDK 版本。因此只要修改项目的 Windows SDK 版…

回车符(CR)与换行符(LF)之间的故事

写在前面 计算机中,涉及换行的字符有两个: 换行符 LF (Line Feed),ASCII 码为 0x0A,转义字符为'\n'; 回车符 CR (Carriage Return),ASCII 码为 0x0D,转义字符为'\r'。 不同的系统使用不同的换行方式: LF:Unix/Linux、Mac …

“非对称加密”到底是个什么玩意儿

“对称加密”和“非对称加密”是两种不同的加密方案。 本文撇开了具体的技术细节和复杂的数学概念,力求用通俗易懂的语言和非常简单的例子给读者讲述明白这两种加密方案的区别。读完本文后,相信你能完全搞懂对称加密和非对称加密原理上的区别。

算法笔记:“最大子列和”问题的算法进化历程(C/C++)

最大子列和问题:给定已知长度的整数数列,找出其中一段连续的子数列,使得该子数列的和最大。用数学语言描述为:给定长度为 n 的整数数列{A1,A2,A3,...,An},求函数f(i,j)=max{0,∑{k=i}{j}Ak}的最大值。本文将依次讲解解决这一问题的 4 个逐渐优化(指时间复杂度)的算法…

用 GitHub Pages 托管网页并绑定域名的正确姿势

写在前面 网上许多关于 GitHub Pages 的教程文章由于年代久远,内容早已不再适用。我觉得也有必要写一篇文章来介绍如何以正确的姿势创建 GitHub Pages 仓库,并绑定自定义域名。 需要提醒的是,GitHub Pages 不是诸如 VPS 的服务器,它仅支持静态网页(HTML 等)而不…

如何使用 VS Code 编译、运行并调试 C/C++ 程序

写在前面 Visual Studio Code (以下简称 VS Code)是微软推出的一款轻量级代码编辑器,它不仅开源、免费,而且能够跨 Windows、Mac 和 Linux 三平台。尽管它体积小巧,我们可以通过安装各种插件的方式来扩展 VS Code 的功能。现在 VS Code 的社区已经比…

新手向:你可能不知道的 Dev C++ 使用技巧

写在前面 尽管 Dev C++ 是一个过气 IDE,但仍然有许多高校、算法竞赛要求用它来编译代码。既然要用它,就要尽量用好它,发挥它的最大作用。虽然 Dev C++ 没有现代开发环境(如 Visual Studio 等)的非常智能化的自动补全、代码纠错和 debug 功能,但它还是有一些实用的功能的…

符号数的表示:彻底弄清原码、反码、补码的关系

写在前面 在阅读本文前,我默认你已经了解一些关于进制、比特、符号数等的知识。计算机对符号数的表示方法涉及原码、反码和补码,它们是容易混淆的概念。本文讲尽力讲解它们三者之间的区别和联系。 首先要说明的是,本文中的“反码”“补码”两个个词汇指的是对一个二进制数的变换方法,而“源码形式”“反码形式”“补码…

将 Visual Studio 项目同步到 GitHub 傻瓜教程

使用 GitHub Extension for Visual Studio 插件,可以很容易地将使用 Visual Studio 开发的程序代码托管至 GitHub 上,而无需操作 Git Bash(命令行)。本文将介绍如何创建一个新的 GitHub 仓库,并且把本地已有的 VS 项目同步到这个仓库…

一个简单的 C++ 控制台回合制游戏

写在前面 作为 C++ 的学习者,我最近花了几天时间做了一个很简单的控制台回合制小游戏,取名为 Hero Era Battleground。游戏内容就是英雄对战,由玩家扮演的英雄和电脑进行回合制的战斗,以杀死对方为目的。 说是“游戏”其实也算不上,因为它实在是太简陋了。事实上,这是我的第一个可以称作…