news 2026/9/27 1:57:04

VS2019配置Fortran编译器:Intel oneAPI安装与高效排错指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
VS2019配置Fortran编译器:Intel oneAPI安装与高效排错指南

简介:VS2019 + Fortran 开发环境的保姆级安装教程,适合从零开始配置 Windows 下 Fortran 编程环境、或需要处理旧项目迁移问题的开发者。内容覆盖 Visual Studio 2019 安装包获取与本地路径修改、Fortran 支持组件 HPC Toolkit 的自定义安装、新建项目时 Fortran 语言选项的调出,以及运行旧代码时常见的 x64 与 win32 平台不支持、编译器缺失等报错处理。针对代码迁移至新项目、项目文件内容替换、Fortran 编译属性调整、安装器配置管理器设置等关键操作,均有清晰图文说明,并附有知乎与哔哩哔哩等参考教程链接,便于读者对照自身环境进行排错和调整。文档为单个 docx 文件,大小约 4.1MB,内容结构完整,可按步骤逐步操作,即便零基础也能跟随完成环境搭建与程序运行。目前已有 1650 人学习下载,对需要快速使用 Fortran 进行课程实验或科研计算的用户具有较强的实用性和操作性。

1. 装 VS2019 还要装 Fortran 编译器:这条路到底卡在哪

如果你正在为 vs2019+Fortran 安装和项目运行这套组合头疼,多半是刚拿到一份导师或同事给的 Fortran 老代码,要在 Windows 上把它编译、跑通、拿到结果。真正动手时你会发现,麻烦不在写代码,而在环境:VS2019 的官网入口被新版本盖住了,Intel Fortran 装完在 VS 里找不到语言模板,好不容易建了项目又遇到窗口闪退、中文路径报错。这篇文章把整条路线拆开讲:从 VS2019 安装包的获取方式、Fortran 编译器的选型与安装,到新建项目、编译运行、调试传参,再到我踩过的五个高频坑。适合拿着老代码要做科研计算的人,也适合刚开 Fortran 课程、不知道用哪套工具链的学生。

2. 拿到 VS2019 安装包:官网隐藏入口、离线镜像与组件勾选

2.1 为什么是 VS2019 而不是 VS2022:老工程和 Intel 编译器早就锁死了版本

Fortran 工具链和 Visual Studio 版本是绑定的。Intel Visual Fortran 2013 配的是 VS2013,Intel Parallel Studio XE 2018/2020 的主推搭档是 VS2017/2019,现在的 Intel oneAPI 里经典版 ifort 对 VS2019 的集成也是最完整的。VS2022 本身是 64 位 IDE,能打开老工程,但很多基于 VS2019 生成的 Fortran 工程文件在升级时会触发工具集重定向,Intel 集成组件对新版 VS 的支持也往往慢半拍。所以,如果你手里的代码来自三五年甚至十年前,选 VS2019 不是怀旧,是最少折腾的路线。

VS2019 社区版是免费的,安装完登录微软账号即可,不需要找什么产品密钥。网上搜“vs2019产品密钥”的人,多半是被某些文章误导,以为要破解才能用,实际上社区版对个人开发者、教学和科研完全够用,企业商用才需要考虑授权问题。下载入口也确实越来越难找:微软官网首页默认主推 VS2022,VS2019 被收进“较旧的下载”区域,直接从搜索引擎搜“vs2019 社区版 下载”,通常还能找到官方引导器,不要在第三方站点下,来源不明的东西不值得冒这个风险。

2.2 官网找不到安装包?用引导器自己做离线安装镜像

如果你在单位内网,或者宿舍网络总在关键时候掉链子,直接在线安装 VS2019 很容易装到一半失败。常见做法是先拿官方引导器做一个离线镜像,之后所有机器都从镜像安装,速度稳定,也不会反复下载。官方引导器是一个小的 exe,关键命令是这样的:

vs_community.exe --layout D:\vs2019_offline --add Microsoft.VisualStudio.Workload.NativeDesktop --includeRecommended --lang zh-CN

这段命令的意思是在 D 盘生成一个“离线仓库”,预先下载好“使用 C++ 的桌面开发”工作负载及其推荐组件,语言包只拉简体中文。--layout指定离线镜像目录;--add指明要预下载的工作负载,这块对应后面安装时勾选的组件;--includeRecommended会把推荐组件一起拉下来,避免安装到一半提示缺东西;--lang zh-CN控制语言包大小,默认全语言会很占空间。

镜像拉完之后,进入 D:\vs2019_offline 目录,双击里面的 vs_community.exe,它会以完全离线的方式安装。提示一下,镜像目录最好放在非系统盘,VS2019 本体加 C++ 工具集装完占用的空间不小,镜像还要更重,预留 30GB 以上比较稳。装完第一台机器后,这个目录可以拷贝到别的机器复用,省掉每台机器重新下载的时间。

2.3 组件只勾一个:使用 C++ 的桌面开发

进入安装界面后,选择“使用 C++ 的桌面开发”这一个工作负载就够了,这是本套方案里唯一必须的组件。很多人第一次装 VS 习惯顺手勾一堆:Python 开发、.NET 桌面开发、UWP 之类,结果安装时间翻倍,磁盘占用多出几十 GB,后续还用不上。Fortran 编译器在 VS 里的集成插件,本质是一个挂在 MSBuild 上的编译器前端,依赖 C++ 工具集提供编译器和构建基础设施,所以 C++ 桌面负载是硬前提。

安装完成后,可以在开始菜单里看到“Developer PowerShell for VS 2019”或“Developer Command Prompt for VS 2019”,看到这两个入口之一,说明核心工具集已经就位。此时不要急着装 Fortran,先打开一次 VS2019,让它把首次启动的配置流程走完,再关掉。这个顺序很重要,因为后续 Intel oneAPI 安装时要把 VS 集成组件注册到已安装的 VS 实例上,如果 VS 连首次启动都没完成,集成容易出问题。

2.4 安装过程中断网或卡住:别急着删了重来

VS 引导器是支持断点续传的。安装时网络中断,重新运行引导器,它会从上次进度继续,而不是从头再来。很多人在安装界面看到进度条长时间不动,就以为卡死,强行结束进程后删目录重装,白白浪费一两个小时。正确做法是等 10 到 15 分钟,观察网络流量是否还在跳动,或者日志文件是否还在增长。日志位置在 %TEMP%\dd_setup_* 目录下,按时间排序找最新的文件,里面有每一条组件下载和安装状态。

如果用的是上一节做的离线镜像,这个过程就简单了,断网不影响安装。首次启动 VS2019 时会要求登录微软账号,这里有一个小技巧:暂时不想登录就点“跳过”,VS 会进入限量的可用状态,编译功能不受影响。登录只是为了同步设置和激活社区版授权,离线环境下不登录也能正常写代码、编译、调试。

3. Fortran 编译器选型与安装:Intel oneAPI 和轻量备选怎么选

3.1 ifort 和 ifx 怎么选:VS 集成度决定新手体验

当前的 Intel Fortran 有两条产品线:经典版 ifort 和 LLVM 版 ifx。对 VS2019 集成完整度来说,ifort 经典版是目前最稳的选择,多数资料、教程、报错信息也都是基于 ifort 写的。ifx 对 Fortran 2018 新特性的支持更好,但 VS 集成组件还不够成熟,新手用它容易遇到“编译器在命令行能用,在 VS 里建不了项目”的尴尬。

网上搜“intel visual fortran 2013 安装包”的人,手里多半有一批 2013 年生成的 .vfproj 老工程。这些工程在 VS2019 里用新版 ifort 打开时,会弹出工程格式升级提示,直接确认即可。个别工程会报“未识别的编译选项”,比如当年 SSE 指令集优化开关-QxSSE3,新版编译器已经删除,需要回到项目属性里删掉对应行。这是老工程迁移最常见的插曲,属于正常的兼容成本,不是安装失败,不用回头找旧安装包。

3.2 用 oneAPI 安装 ifort 并验证 VS 集成

Intel 现在统一通过 oneAPI 安装器分发编译器。运行安装器后选择自定义安装,在组件列表里勾选“Intel Fortran Compiler Classic (ifort)”,同时确认“Visual Studio 集成”或“Visual Studio 2019 support”选项被勾上。Base Toolkit 里的 MPI、DPC++ 等并行计算组件暂时用不到,不必勾选,能省不少磁盘空间。

安装完成后,打开“Intel oneAPI Command Prompt”或普通终端执行下面的验证命令:

# 查看经典版编译器版本 ifort --version # 查看编译器可执行文件所在路径 where ifort

ifort --version会输出编译器的完整版本号,where ifort则是确认编译器已经在 PATH 里。如果提示“不是内部或外部命令”,说明安装后环境变量还没生效,需要在终端里先执行call "C:\Program Files (x86)\Intel\oneAPI\setvars.bat",再跑上面的命令。这一步过关后,打开 VS2019,新建项目,右上角搜索框输入 fortran,应该能看到“Intel(R) Visual Fortran”或“Fortran Console Application”模板节点。

很多人在安装 Intel Fortran 2020 之后找不到 Fortran 语言,问题就出在这两个细节:一是 oneAPI 安装时没勾 VS 集成组件,二是在 VS 里新建项目时没有注意到 Fortran 模板藏在“其他语言”分组下面,它和 C#、C++ 不在一起。模板节点验证要比命令行验证更早做,别等代码写完了才发现 VS 不认编译器。

3.3 轻量备选:Simply Fortran 和 gfortran 分别适合谁

如果你的目标只是跑通一个单文件的课程作业,或者验证一段从网上复制的数值算法,不想折腾 VS 工程体系,那么 Simply Fortran 是更轻的选择。它自带编辑器、编译器和调试器,下载安装后打开就是类似老式 IDE 的界面,对新手友好得多。

gfortran 则是另一个常见备选,尤其适合从 Linux 迁移过来的代码,因为很多开源 Fortran 项目默认就是 gfortran 编译链。但 gfortran 在 Windows 上对 VS 的集成基本为零,只能在命令行里用,拿它做项目模板管理不方便。所以备选方案适合临时验证,如果后续要接 VS 的调试器看数组内容、逐步跟踪变量,还是要把 Intel 这条主路线走出来。

4. 新建 Fortran 项目并跑通第一个程序:从 GUI 操作看到背后命令

4.1 新建项目时找不到 Fortran 节点怎么办

打开 VS2019,依次进入“文件”菜单、“新建”、“项目”,在创建新项目对话框右上角的搜索框里输入 fortran,正常情况下会出现“Fortran Console Application”模板。选中模板后,项目名和位置都改成英文,例如 D:\codes\calc01,这一步不是洁癖,是给后面少添麻烦——老版本编译器对中文路径的兼容性问题到现在都没完全解决。

如果搜索框里没有任何 Fortran 相关模板,先别急着重装,绝大多数情况是编译器装了但 VS 集成没生效,或者 oneAPI 安装器把集成组件默认关闭了。处理顺序在第 5 章第五条里有详细说明。这里要记住一个原则:模板由 VS 集成组件决定,编译器由 PATH 里的 ifort.exe 决定,两件事分别排查。

4.2 最小可运行工程:hello.f90 与两种运行方式

新建项目后,工程里会自动生成一个源文件,默认名字可能是 Source1.f90 或 hello.f90。往里写一个含输入和输出最小程序,感受一下 Fortran 的书写习惯:

program hello implicit none integer :: a, b character(len=64) :: name print *, 'Hello, Fortran + VS2019' print *, '请输入姓名:' read '(a)', name print *, '请输入两个整数:' read *, a, b print *, '姓名: ', trim(name) print *, '两数之和: ', a + b end program hello

implicit none是每个 Fortran 程序都应该有的第一行,它关闭隐式变量类型推断,防止变量名拼写错误导致难以排查的数值异常。read '(a)'表示按字符串读取一行,read *则是表控输入,从键盘读入两个整数。trim(name)去掉字符串尾部空格,避免输出对齐问题。这个程序同时覆盖了输入、输出和字符串处理,作为环境验证比单纯的 hello world 更有说服力。

运行方式建议养成习惯:按 Ctrl+F5,也就是“调试”菜单里的“开始执行不调试”。如果按 F5 直接跑,程序正常结束时会直接退出控制台,窗口一闪而过的概率很大。程序里因为有read *在等待输入,暂时还会停在窗口里,但如果你把这段代码改成纯计算型的 hello world,闪退问题立刻就会出现。

4.3 把 VS 的编译动作翻译成 ifort 命令行

VS 在幕后调用的就是 ifort,把 GUI 动作翻译成命令行,可以帮助你看懂编译输出窗口里的长串信息。上面的 hello.f90 在命令行里的等价操作是:

# /nologo 去掉编译横幅,/O2 开优化,/debug:full 生成完整调试信息 # /check:all 开启运行时数组越界检查,/exe 指定输出文件名 ifort /nologo /O2 /debug:full /check:all hello.f90 /exe:hello.exe # 运行编译产物 hello.exe

各参数含义:/nologo让输出更干净;/O2是 Release 的默认优化级别;/debug:full生成调试符号,方便在 VS 里断点查看变量;/check:all是新手必备,程序运行时会检查数组下标是否越界,一旦越界立刻报错。注意/debug:full和/O2可以同时存在,这正好对应 VS 里你手动改过的 Debug 配置:默认 Debug 不开优化,Release 默认O2且关闭check,两者配合的坑在第 5 章第五节展开。

工具栏上的“解决方案配置”下拉框可以在 Debug 和 Release 之间切换。Debug 适合开发期跟变量,Release 适合做最终计算。关于这一点,绝大多数数值计算的老手都有一条共同经验:调通算法之前不要碰 Release。

4.4 工程文件的目录结构与 MKL 数值库链接

VS 工程跑通后,解决方案目录下会有几个关键文件:hello.sln 是解决方案文件,hello.vfproj 是 Fortran 工程文件,两者共同描述项目结构和编译配置。编译生成的中间文件和最终 exe 默认放在 Debug/ 或 x64/Debug/ 子目录里。如果需要给程序传命令行参数,比如算例文件路径,在“配置属性”—“调试”—“命令参数”里填写,这个位置和 C/C++ 工程的设置完全一致。

计算类的 Fortran 代码经常会调用 Intel MKL 数学库,比如矩阵乘法 dgemm。VS2019 里只要在“项目属性”—“Intel Fortran”—“Libraries”中勾选“Use MKL Library”,并选择 sequential 或 parallel 模式,编译器会自动把 MKL 的 include 和 lib 路径加到编译命令里,不需要手动复制 DLL 或配置环境变量。命令行对应的写法是在编译命令末尾加一个/Qmkl,这个选项属于 ifort 的经典老牌开关,兼容性非常可靠。

5. 安装和运行高频踩坑:现象、原因、解决

5.1 现象一:VS2019 里找不到 Fortran 模板

新建项目时搜索 fortran,结果空空如也,只有 C#、C++、Python 等模板。这是一个非常典型的问题,网上搜“intel fortran 2020 安装后找不到 fortran 语言”的帖子几乎都是这一场景。

原因有且只有两种可能:一是 Fortran 编译器根本没装上;二是编译器装了,但 oneAPI 安装时没有勾选 Visual Studio 集成组件。排查顺序很关键,先打开命令行跑ifort --version。如果提示命令不存在,编译器都没装好,先去装 oneAPI;如果命令正常,说明编译器在,问题出在 VS 集成。

解决方法是重新运行 oneAPI 安装器,选择 Modify,展开 Fortran 编译器组件,把“Visual Studio 2019 integration”这一项勾上,然后点应用。完成后重启 VS2019,再搜索模板。另外,VS 本身缺少“使用 C++ 的桌面开发”工作负载,同样会导致 Fortran 模板不出现,因为集成插件找不到可挂载的 C++ 工具集,所以前面第二章强调的那个组件勾选不是你多虑。

5.2 现象二:编译时报错找不到 ifort 或显示一长串乱码路径

项目建好了,模板也出现了,按 F7 编译却报“无法定位 ifort.exe”,或者错误输出里出现一个不存在的绝对路径。

原因通常不是编译器损坏,而是 VS 启动时没有继承 Intel 编译器的环境变量。从桌面直接双击 VS 图标这种方式,启动进程的环境变量来自 Windows 系统级 PATH,而 Intel 编译器在安装时并不保证把它自己的目录写进系统 PATH,它是通过 oneAPI Command Prompt 的 setvars.bat 脚本注入环境的,两边不一致就会导致 VS 里找不到 ifort。

解决方式有两种,推荐第一种:从开始菜单打开“Intel oneAPI Command Prompt for VS 2019”,然后再启动一个 VS 实例,同时打开 hello.sln 工程,编译时它就能继承完整的 Intel 环境。如果你坚持从桌面图标启动,可以在项目属性的“VC++ 目录”里手动添加 Intel 的 include 和 lib 路径,但不如命令行方式干净。

# 在不同机器上盘符和版本号可能不同,按实际安装位置调整 call "C:\Program Files (x86)\Intel\oneAPI\setvars.bat" vs2019 # 在当前命令行环境里启动 VS,让子进程继承刚才注入的环境 devenv hello.sln

这段命令先初始化 Intel 环境,再在同一个命令行进程里启动 VS。devenv 是 VS 的主程序,以这种方式启动后,编译按钮就能找到 ifort.exe。注意 shell 必须是 CMD,不能用 PowerShell,不是说 PowerShell 不行,只是call语法是 CMD 的行为。

5.3 现象三:运行后窗口一闪而过,结果根本看不清

直接双击生成的 exe,或者用 F5 运行,控制台窗口弹出来不到一秒就关闭,根本来不及看输出结果。

原因是控制台程序正常执行完毕后就退出,Windows 会自动关闭对应的控制台窗口,这不算错误,是正常行为。很多人误以为程序崩溃了,其实是运行成功了,只是没停住。

解决方式有三种,按推荐程度排序:一是坚持按 Ctrl+F5 从 VS 里运行,窗口会停住并显示“请按任意键继续”;二是在程序末尾加一行read *, i,其中i是一个未使用的整型变量,让程序等待一次回车输入再结束;三是在命令行环境里手动运行 exe,这样窗口不会自动关闭。不建议在代码里调用system("pause")之类的 C 库函数,它在不同 Fortran 编译器上的标准库兼容性参差不齐,属于典型的“能用但不出问题就没事,出问题就很麻烦”。

5.4 现象四:中文路径导致编译失败,玄学又难查

工程放在“D:\计算\fortran\test”这种带中文的路径下,编译时报错信息往往非常奇怪:有时是找不到源文件,有时是链接失败,有时是运行到一半找不到某个数据文件。这些报错指向的文件明明都存在,这就是老版本 ifort 对非 ASCII 路径的编码缺陷,属于编译器层面对路径字符串的编码判断问题,不是你代码写错了。

解决方式只有一条路:整个工程链路上不要出现任何中文。这里说的工程链路包括解决方案文件所在目录、工程文件所在目录、源文件所在目录、工作目录,以及运行时读取的数据文件路径。其实还有一条更隐蔽的规则:源文件名本身也不要使用中文,哪怕是“计算.f90”这种看起来没问题的命名,在某些版本里也会触发类似问题。真遇到已经写好的中文路径文件,复制一份到纯英文目录再编译,不要尝试在编译器配置里设置默认编码,这条路又长又窄,走了容易翻车。

5.5 现象五:Debug 正常 Release 结果不对或直接崩溃

一份代码在 Debug 配置下跑得好好的,切换到 Release 配置后,要么计算结果是 NaN,要么运行到中间阶段直接异常退出。这种问题在数值计算类程序里出现频率极高,最容易让人怀疑代码写错了,于是开始一段漫长的代码排错之旅。

原因有两层:一是 Release 默认开启/O2优化,编译器会对浮点运算做重关联,改变求值顺序,导致累积误差放大,在某些条件恶劣的算例里直接发散成 NaN;二是 Release 默认关闭/check:all这类运行时检查,原本在 Debug 下会拦住数组越界的操作,在 Release 下会继续运行,直到访问非法内存才崩。

解决方式分两步:第一步,把项目属性的“Intel Fortran”—“Optimization”—“Floating Point Model”改成 strict,这个开关会让编译器不重排浮点运算;第二步,算法模块在 Debug 下调通后,先用 Release 加/check:all跑一遍,确认没有越界,再放开优化做正式计算。这里的血泪经验是:不要在 Debug 和 Release 都正常之前,把任何一组计算结果当成可信结果发出去。

6. 进阶:让 VS2019 只做编辑和调试,编译交给 ifort 命令行

工程规模变大后,你会发现每次在 VS 里点 F7 再等输出窗口,效率远不如写一个批处理脚本一次性完成编译、运行、保存结果。我的习惯是:VS2019 负责编辑代码和断点调试,批量算例全部交给命令行,用批处理把编译参数固定死,避免每次 GUI 操作时手滑改错配置。

@echo off call "C:\Program Files (x86)\Intel\oneAPI\setvars.bat" vs2019 :: 固定优化开关:/fp:strict 禁止浮点重排,保证和 Debug 算例对得上 ifort /nologo /O2 /fp:strict /check:all hello.f90 /exe:hello.exe :: 跑完备份结果文件,保留计算现场 hello.exe copy /Y output.txt output_backup.txt

这个脚本的核心价值在于把编译环境固化下来。call setvars.bat确保环境一致,/fp:strict确保浮点行为和 Debug 一致,/check:all在计算前拦住越界。如果一段算例需要跑三天,你不会希望三天后被告知结果不对,而自己连当时用的编译参数都记不清。

如果要在同一台机器上同时维护多个工程,可以在项目属性里把“生成事件”—“预生成事件”指向对应版本的批处理文件,这样 VS 的 F7 按钮和命令行脚本共用同一套参数,两边不会出现版本漂移。我过去曾把一批算例跑完才发现 Debug 配置下的计算流程和 Release 验证流程不一致,浪费了整整一周,后来才养成在批处理注释里写明编译器版本和优化开关的习惯。这个方向值得坚持,计算类工作最怕的就是过程不可复现,希望帮到你。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/27 1:56:54

wordpress制作portfolio对比评测:3招让作品站流量翻倍的实战方案

wordpress制作portfolio对比评测:3招让作品站流量翻倍的实战方案 网站做好了没人访问,这是大多数设计师转前端做WordPress制作portfolio时最头疼的事。你花了一周时间美化页面,上传了20个精选案例,结果后台统计显示,除了你自己和几个朋友,几乎零流量。别急着怪SEO没做好,…

作者头像 李华
网站建设 2026/9/27 1:56:22

2026硬件面试高频考点拆解:ADC采样、EMC整改与器件选型实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/27 1:56:20

避坑指南:网站做动态图片大全图解步骤全解

避坑指南:网站做动态图片大全图解步骤全解 找建站公司最怕什么?不是技术不行,是报价虚高、隐形收费满天飞。很多福建的创业团队负责人,为了省那点咨询费,自己折腾网站,结果卡在“动态图片”这个环节,要么加载慢到崩溃,要么兼容性问题一堆,最后花大钱重做。今天咱们不整虚的,直接上 图解步骤…

作者头像 李华
网站建设 2026/9/27 1:56:19

2026最新广告网站搭建报价单:5000到5万怎么花才不亏

2026最新广告网站搭建报价单:5000到5万怎么花才不亏 网站做好了没人访问,这是大多数老板在上线后最焦虑的问题。很多甲方朋友找我们聊,花了几万块做了个漂亮的官网,结果半年流量只有几百个,钱打了水漂。在2026年的最新行业趋势下,单纯追求“好看”已经没用了,得看“转化”和“效率”。…

作者头像 李华
网站建设 2026/9/27 1:55:43

3步搞定网站建设需求分析调研表,告别服务器被黑

3步搞定网站建设需求分析调研表,告别服务器被黑 昨晚11点,运维群突然炸了。老板发来一张截图,首页挂满了赌博广告,后台代码被注入了一段恶意脚本。这种网站被黑挂马不知道怎么办,比失恋还让人崩溃。更扎心的是,查日志才发现,根本原因是上线前没做 性能优化 和安全加固,服务器端口裸奔,数据库权限给得太大。…

作者头像 李华
网站建设 2026/9/27 1:55:39

同步Buck开关节点振铃的RC吸收设计与EMI整改实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华