就拿网络指纹技术来说,学C至少了解其核心库的运行机制是很重要的,可高度自定义TLS握手,不然CF盾都过不了,反代ChatGPT就更加做不到
虽然最轻松跑C环境是在Linux或者WSL上,但有时难免有需求得在windows跑,此时若链接编译些复杂项目,不搭好MSVC环境,单纯用MinGW/Clang还是会有跑不动的情况.关于MSVC环境搭建,网上有些教程可能不够全面或过时,我来做个比较新的补充
为何不用Visual Studio?看个人喜好,用惯了VSCODE不喜欢用别的IDE,想用就用不拦着.这个方法给不想用它的人,喜欢从轻量化开始,减少不可控量,用自己最熟悉的IDE效率是最高的
往下找到"所有下载",关键字"工具", Visual Studio 生成工具

VS包管理工具

首页不勾选,点"单个组件",分别搜索MSVC和Windows 11 SDK,选择最新版本,这样就可以做到最小化安装.
- MSVC提供编译器 cl.exe link.exe等基础构建工具
- Windows 11 SDK提供系统头文件和库,向后兼容 Windows 10
可能需要手动添加环境变量,主要是这两个目录下的bin lib include:
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC
C:\Program Files (x86)\Windows Kits\10
# 默认目录结构都是一样的,最简单的方式,版本一样直接用,版本不同就粘到你编辑器,用你的版本号替换这里的版本号
# Path 编辑添加
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.42.34433\bin\Hostx64\x64
C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64
# 新建 LIB
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.42.34433\lib\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.26100.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.26100.0\ucrt\x64;
# 新建 INCLUDE
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Tools\MSVC\14.42.34433\include;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\shared;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\winrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.26100.0\cppwinrt

简单介绍添加的这几个库用途
um(User-Mode) : 包含了适用于Windows 用户模式开发的头文件和库
ucrt(Universal C Runtime) : Windows 平台的通用C运行时库,提供标准C函数(如 printf、malloc)和其他核心功能
shared : 提供 Windows 头文件和库的共享部分,是许多其他 SDK 组件的基础, 包括常见的 Windows API 头文件(如 windows.h)和一些底层支持库
WinRT : 提供 Windows 运行时支持,用于访问现代Windows API(如 UWP 和 WinRT 组件)
CppWinRT : 提供高效、类型安全的C++ API,通常用于 UWP 和 WinRT 应用开发
现在配置好了,刷新环境变量,检查确认cl可用,可正常导入各种头文件
附vscode使用cl的配置.vscode/tasks.json:
{
"version": "2.0.0",
"tasks": [
{
"label": "Build and Run", // 任务名称
"type": "shell",
"command": "cl", // 调用 MSVC 编译器
"args": [
"/EHsc", // 启用 C++ 异常处理
"/Fe${fileDirname}\\${fileBasenameNoExtension}.exe", // 生成的可执行文件路径
"${file}" // 编译当前打开的文件
],
"group": {
"kind": "build",
"isDefault": true // 将此任务设置为默认任务
},
"problemMatcher": ["$msCompile"], // 配置问题匹配器以捕获编译错误
"detail": "Build and run a single C or C++ file with cl"
}
]
}
.vscode/launch.json:
{
"version": "0.2.0",
"configurations": [
{
"name": "Build and Run C/C++", // 调试任务名称
"type": "cppvsdbg", // 使用 MSVC 调试器
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe", // 指定可执行文件路径
"args": [], // 如果需要,可以添加运行时参数
"stopAtEntry": false, // 是否在入口处暂停
"cwd": "${fileDirname}", // 设置当前工作目录
"console": "integratedTerminal", // 使用集成终端运行
"preLaunchTask": "Build and Run" // 运行前执行的任务
}
]
}
按F5 编译并运行

在Windows上最好MSVC MinGW LLVM三个都装,以应对一些复杂的项目依赖情况,做好指定不会冲突
其它CMake构建工具 NASM汇编器 使用choco一起安装即可
choco install -y mingw llvm cmake nasm
还不了解的看这里
很多人想从HelloWorld开始学习C,但电脑是windows系统,就需要额外安装C的windows环境.
我们现在的目标就是最快速度完成HelloWorld,代码很简单:
#include <stdio.h>
int main() {
printf("Hello, World!\n");
return 0;
}
但环境安装过程可能难倒很多人,"错误"的复杂示例(也给上链接,都…