C++标准版本查看指南:预定义宏、编译器标志与跨平台兼容性
1. 项目概述为什么需要知道你的C标准在C的世界里混迹你肯定不止一次遇到过这样的场景同事发来一段代码编译报错你一看里面用了std::filesystem而你的本地环境死活编译不过。或者你在网上看到一个炫酷的C17特性比如结构化绑定Structured Binding兴冲冲地写进自己的项目结果编译器给你泼了一盆冷水告诉你“不认识这个语法”。又或者你在维护一个跨平台的老项目需要在Windows的MSVC、Linux的GCC和macOS的Clang上确保行为一致这时候明确每个编译器当前使用的C语言标准版本就成了保证代码可移植性的第一步。“查看你正在使用的C标准”这个看似简单的需求背后牵扯到的是C生态的复杂性。从经典的C98/03到带来现代C曙光的C11/14再到功能大幅增强的C17/20以及正在稳步推进的C23/26每个标准都引入了大量新特性、新库组件和语法糖。编译器对它们的支持程度和默认启用标准各不相同。因此无论是为了确保代码兼容性、利用最新特性提升开发效率还是单纯为了满足好奇心掌握几种快速、准确地探测当前编译环境C标准版本的方法都是一项非常实用的技能。这不仅仅是敲一两条命令更是理解你开发环境配置的一个重要环节。2. 核心原理与标准定义解析在动手查看之前我们有必要先厘清几个关键概念。所谓“C标准”通常指的是由ISO/IEC组织发布的C编程语言国际标准文档例如ISO/IEC 14882:2017就是C17。编译器通过实现这些标准中规定的语法、语义和库来提供对特定C版本的支持。2.1 预定义宏编译器的“身份证”编译器在编译过程中会预先定义好一系列宏这些宏就像是编译器的“身份证”包含了关于编译器自身、目标平台以及所采用语言标准的信息。对于C标准最重要的几个宏是__cplusplus、_MSVC_LANG以及一些编译器特有的特性测试宏。__cplusplus是一个在C编译模式下由标准要求预定义的宏。它的值是一个长整型常量代表了编译器所遵循的C标准版本。这是最权威、最跨平台的判断依据。例如199711L 代表C98或C03这两个版本在此宏的值上通常未作区分。201103L 代表C11。201402L 代表C14。201703L 代表C17。202002L 代表C20。202302L 代表C23草案或完全支持时。注意微软的MSVC编译器在2017年15.7版本之前__cplusplus宏的值默认始终是199711L除非使用了特定的编译器开关如/Zc:__cplusplus。这是一个历史遗留的兼容性问题。为了获取正确的标准版本在MSVC中通常需要检查_MSVC_LANG宏它的取值与__cplusplus的含义相同。因此编写可移植的版本探测代码时通常需要同时考虑这两个宏。2.2 编译器标志与构建系统除了在代码中探测我们通过命令行或构建系统如CMake、Makefile传递给编译器的标志直接决定了使用哪个标准。常见标志有GCC/Clang:-stdc11,-stdc14,-stdc17,-stdc20,-stdc23,-stdgnuXX包含GNU扩展。MSVC:/std:c14,/std:c17,/std:c20,/std:clatest最新实验性特性。查看构建系统的配置文件如CMakeLists.txt中的set(CMAKE_CXX_STANDARD 17)是确定项目预期标准的直接方法。2.3 特性测试宏Feature Test Macros从C20开始标准库提供了更细粒度的特性测试宏定义在version头文件中。这些宏可以用来检查编译器是否支持某个具体的语言或库特性例如__cpp_constexpr、__cpp_lib_filesystem。通过检查这些宏是否存在及其值可以间接推断出编译器支持的标准水平尤其适用于检查对某个特定特性的支持情况比单纯检查版本号更精确。3. 实操方法多种途径查看C标准理论清楚了我们进入实战环节。我将从简单到复杂介绍几种在不同场景下查看C标准的方法。3.1 方法一编写小型探测程序最直接可靠这是最灵活、信息最全的方法。创建一个简单的.cpp文件通过打印预定义宏的值来查看。// check_cpp_standard.cpp #include iostream #include version // 用于C20的特性测试宏 int main() { // 1. 打印核心的 __cplusplus 宏 std::cout __cplusplus __cplusplus std::endl; // 将数值转换为易读的年份 if (__cplusplus 202302L) std::cout C23 (or later draft) std::endl; else if (__cplusplus 202002L) std::cout C20 std::endl; else if (__cplusplus 201703L) std::cout C17 std::endl; else if (__cplusplus 201402L) std::cout C14 std::endl; else if (__cplusplus 201103L) std::cout C11 std::endl; else if (__cplusplus 199711L) std::cout C98/03 std::endl; else std::cout pre-standard C or unknown std::endl; // 2. 针对MSVC的特殊处理 #ifdef _MSVC_LANG std::cout _MSVC_LANG _MSVC_LANG std::endl; #endif // 3. 打印编译器自身信息可选 #ifdef __clang__ std::cout Compiler: Clang __clang_major__ . __clang_minor__ . __clang_patchlevel__ std::endl; #elif defined(__GNUC__) std::cout Compiler: GCC __GNUC__ . __GNUC_MINOR__ . __GNUC_PATCHLEVEL__ std::endl; #elif defined(_MSC_VER) std::cout Compiler: MSVC _MSC_VER std::endl; // _MSC_VER 是版本号如1930对应VS2022 #endif // 4. 示例检查某个特定特性是否支持C20 起更好用 #ifdef __cpp_lib_format std::cout Library feature format is supported (macro value: __cpp_lib_format ) std::endl; #else std::cout Library feature format is NOT supported. std::endl; #endif return 0; }编译与运行# 使用GCC或Clang指定C17标准编译 g -stdc17 -o check_standard check_cpp_standard.cpp ./check_standard # 使用MSVC (Developer Command Prompt) cl /std:c17 /EHsc check_cpp_standard.cpp check_standard.exe实操心得将这段代码保存为一个模板文件在任何新环境或不确定的项目中快速编译运行是最可靠的诊断手段。注意编译命令中的-std或/std标志它决定了这段探测代码自身以何种标准编译从而输出对应的宏值。你可以通过改变这个标志来验证不同标准下的输出。对于MSVC即使你在项目属性中设置了“C语言标准”如果未启用/Zc:__cplusplus__cplusplus可能仍是旧值。此时_MSVC_LANG更准确。3.2 方法二利用编译器命令行查询如果你不想写代码大部分编译器都提供了打印自身配置信息的选项。对于GCC/Clang# 这条命令会输出GCC的默认C标准。注意它显示的是“默认”行为可能被后续命令行参数覆盖。 g -dM -E -x c /dev/null | grep -F __cplusplus # 或者更直接地编译一个空文件并查看预处理结果 echo | g -dM -E -x c - | grep __cplusplus输出可能类似于#define __cplusplus 201703L这表示默认是C17。更实用的方法是直接询问编译器支持哪些标准# GCC g --helptarget | grep -i std # 或查看特定手册 g -v --help 21 | grep -i std.*c # Clang clang --help | grep -i std这些命令会列出所有支持的-std选项如c11,c14,c17,c20,c2b(C23草案)等。对于MSVC在Developer Command Prompt中MSVC没有直接打印标准的单一条命令。但你可以通过编译一个简单程序并查看宏或者查看项目属性。打开“项目属性” - “C/C” - “语言” - “C语言标准”。或者在命令行中编译时添加/Bv标志可以显示详细的编译器版本信息但其中不直接包含标准信息。更常用的还是通过_MSVC_LANG宏在代码中查看。3.3 方法三在CMake项目中确认现代C项目大量使用CMake作为构建系统。CMake提供了清晰的方式来设置和查询C标准。在CMakeLists.txt中设置标准cmake_minimum_required(VERSION 3.10) project(MyProject) # 设置要求的C标准并强制传播给目标 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) # 禁用编译器扩展使用纯ISO标准 add_executable(my_app main.cpp)如何查看一个已配置的CMake项目使用的标准查看CMakeLists.txt文件直接搜索CMAKE_CXX_STANDARD、target_compile_features或set(CMAKE_CXX_STANDARD。查看生成的构建系统在构建目录如build/中生成的Makefile或Visual Studio项目文件会包含具体的编译器标志。对于Makefile生成器可以运行make VERBOSE1来查看详细的编译命令其中就包含了-stdcxx。也可以直接cat build/CMakeCache.txt | grep CMAKE_CXX_STANDARD。使用CMake脚本打印在CMakeLists.txt中加入以下消息命令在配置阶段输出信息message(STATUS C standard version: ${CMAKE_CXX_STANDARD}) message(STATUS C standard required: ${CMAKE_CXX_STANDARD_REQUIRED})注意事项CMAKE_CXX_STANDARD是一个“偏好”设置。CMake会尝试使用你指定的版本如果编译器不支持它会降级到已知的最高支持版本除非CMAKE_CXX_STANDARD_REQUIRED设为ON此时不支持会报错。使用target_compile_features(my_target PRIVATE cxx_std_17)是另一种更现代、更精确的方式它表达了目标需要的语言特性集合让CMake去决定具体的编译器标志。3.4 方法四使用在线编译器或工具快速检查对于临时、快速的检查在线编译器网站非常方便如Compiler Explorer (godbolt.org)。打开网站选择C语言。在编译器下拉菜单中如x86-64 gcc 13.2你选择的编译器版本本身就暗示了其对C标准的支持上限。在代码编辑区输入我们的探测代码网站会实时编译并显示输出同时你可以在“编译器选项”中添加-stdc20等标志进行切换。右侧的汇编输出窗口上方通常会清晰显示生效的编译器标志包括-std。这种方法无需配置本地环境适合快速验证不同编译器、不同标准下的代码行为或宏值是学习和排查问题的利器。4. 深入场景解决实际开发中的标准相关问题知道了怎么看更重要的是知道怎么用这些信息解决问题。下面结合几个典型场景分享我的排查思路和技巧。4.1 场景一第三方库依赖与标准版本不匹配问题描述项目A使用C14编译但引入了一个仅支持C17及以上版本的第三方头文件库例如使用了std::optional或std::filesystem的库导致编译错误。排查与解决确认我方标准使用上述方法一或三确认我方项目当前使用的C标准确实是C14。确认库的要求查阅该第三方库的官方文档README, INSTALL、源码中的CMakeLists.txt或主要头文件。有责任的库通常会在文档开头或编译错误中说明最低要求的C标准。有时头文件中会用#error指令或静态断言static_assert来提示。// 库头文件中可能有的检查 #if __cplusplus 201703L #error This library requires C17 or later. #endif升级项目标准如果项目允许将项目标准升级到C17或更高。在CMake中修改CMAKE_CXX_STANDARD。注意升级后需要全面测试因为更高标准可能引入行为变化尽管大多向后兼容。寻找替代或降级如果无法升级项目标准寻找该库的旧版本如果支持C14或者寻找功能类似但兼容C14的其他库。隔离与桥接如果必须使用该库且无法升级主项目可以考虑将依赖该库的部分代码单独编译成一个动态库或静态库这个子项目使用C17编译然后通过C接口extern C与主项目C14进行交互。这是比较重量级的方案。实操心得在项目初期选定一个合适的、且团队所有开发环境和持续集成CI环境都能稳定支持的C标准版本并写入项目规范能避免大量后续的兼容性麻烦。对于新项目我个人推荐至少从C17起步。4.2 场景二跨平台编译时标准行为不一致问题描述代码在Windows (MSVC) 上编译正常在Linux (GCC) 上报错提示某个特性不支持。排查与解决统一标准标识确保所有平台的构建脚本CMake都明确指定了相同的、具体的标准版本。避免依赖编译器的“默认”模式因为不同编译器的默认标准可能不同例如较新的GCC默认可能是-stdgnu17而MSVC需要显式指定/std:c17。# 在CMake中明确设置并禁用扩展以确保纯ISO模式 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) if(CMAKE_CXX_COMPILER_ID MATCHES GNU|Clang) add_compile_options(-pedantic) # 对GNU/Clang可添加-pedantic发出更严格的ISO警告 endif()使用特性测试宏进行条件编译对于你使用的、可能并非所有编译器在指定标准下都完全支持的特性尤其是较新标准中的特性使用特性测试宏进行保护。#include version #ifdef __cpp_lib_constexpr_vector // 使用 constexpr std::vector 的代码 constexpr std::vectorint vec{1, 2, 3}; #else // 回退方案 std::vectorint vec{1, 2, 3}; #endif检查编译器版本即使指定了相同的C标准不同版本的编译器对标准的实现完整度conformance也有差异。使用我们探测程序中的编译器版本宏__GNUC__、_MSC_VER、__clang_major__来记录或条件编译。可以查阅编译器的官方支持表格如GCC的C Status Page MSVC的C Conformance Improvements。在CI中早期发现在持续集成流水线中加入针对所有目标平台和编译器版本的构建和测试任务。一旦有代码提交立即能发现跨平台兼容性问题。4.3 场景三如何为老项目升级C标准问题描述一个使用C98/03的老项目希望升级到C11/14/17以利用现代特性但担心破坏现有代码。升级策略与步骤建立基线在升级前确保项目拥有完整、通过的测试套件。这是你判断升级是否引入回归问题的唯一可靠依据。逐步升级而非跳跃不要试图直接从C98跳到C20。建议路径C98/03 - C11 - C14 - C17 - ...。每次只升级一个标准版本充分测试稳定后再进行下一步。因为每个版本的变化相对可控。修改构建系统将CMake的CMAKE_CXX_STANDARD从旧版本改为新版本如从11改为14。编译并处理错误/警告错误通常是语法不再支持或库API变更。例如C11中auto_ptr被废弃C17中register关键字被移除。需要根据错误信息修改代码。警告新标准下编译器可能会对原有代码发出新的警告如关于拷贝构造、类型转换等。务必重视这些警告它们可能揭示了潜在的bug或不良实践。建议将警告级别调高如GCC/Clang的-Wall -Wextra -WpedanticMSVC的/W4并视情况修复。利用新特性重构可选但推荐在解决编译问题后可以有计划地利用新特性重构部分代码提升代码质量和性能。例如C11使用auto、范围for循环、智能指针、移动语义、lambda表达式。C14使用泛型lambda、std::make_unique。C17使用结构化绑定、std::optional、std::variant、std::filesystem。注意重构需谨慎并伴随充分的单元测试。全面测试运行整个测试套件包括单元测试、集成测试和系统测试。确保所有功能正常。更新文档更新项目的README、构建说明等文档注明新的最低C标准要求。避坑技巧升级后特别注意与第三方二进制库.so, .dll, .a, .lib的兼容性。如果这些库是用旧标准编译的而你的项目用新标准编译并链接它们在绝大多数情况下是没问题的因为C的ABI在主要版本间力求稳定。但是如果库的接口中使用了标准库的复杂类型如std::string、std::vector且库和主项目使用了不同版本或不同配置的运行时库如MSVC中的MT/MTd/MD/MDd则可能引发难以排查的运行时错误。尽量确保所有组件使用相同或兼容的编译环境和设置。5. 工具链与生态集成建议将C标准版本的管理融入到你的日常开发工具链中可以事半功倍。编辑器/IDE配置VS Code在.vscode/c_cpp_properties.json中正确设置cppStandard如cppStandard: c17和compilerPath这样IntelliSense才能提供正确的语法高亮和补全。CLion其标准版本直接从CMake项目中读取确保CMake配置正确即可。Visual Studio在项目属性页中设置并确保所有配置Debug/Release, x86/x64都一致。静态代码分析使用clang-tidy时可以通过-stdc17参数或.clang-tidy配置文件来指定检查所依据的标准。这能确保分析器基于正确的语言规则进行检查。类似地cppcheck也支持--stdc17这样的选项。代码格式化clang-format的某些格式化风格可能与语言特性相关。确保你的.clang-format文件或格式化命令与项目使用的C标准相匹配。依赖管理使用现代包管理器如vcpkg或Conan时可以在包的依赖描述中声明所需的C标准。例如在vcpkg.json中你可以通过dependencies和builtin-baseline来间接控制依赖包编译时使用的工具链和标准。文档化在项目的README.md或CONTRIBUTING.md中明确写出项目要求的最低和/或使用的C标准版本。这对于新加入的贡献者至关重要。掌握查看和确定C标准的方法是现代C开发者的一项基础而重要的能力。它贯穿于项目配置、依赖管理、问题排查和团队协作的各个环节。从编写几行简单的探测代码开始逐步理解编译器标志、构建系统配置和跨平台兼容的细节你会对自己的开发环境有更强的掌控力也能更从容地应对各种与语言版本相关的挑战。记住明确的标准是代码可移植性和长期可维护性的基石。

相关新闻

Harmony os 技术实战|拼豆制图17:把半透明 PNG 正确合成到白色拼豆底稿

Harmony os 技术实战|拼豆制图17:把半透明 PNG 正确合成到白色拼豆底稿

标签:Harmony os、ArkTS、ImageKit、RGBA、透明通道透明 PNG 是图片转拼豆图中最容易被误处理的输入。一个常见做法是忽略 alpha,只读取 RGB:完全透明像素虽然看不见,却可能携带黑色通道,最后被匹配成深咖啡豆&#xf…

2026/10/10 3:24:30 阅读更多 →
转转反爬虫机制深度解析:从JS逆向到工程化爬虫系统构建

转转反爬虫机制深度解析:从JS逆向到工程化爬虫系统构建

1. 从一次失败的抓取说起:为什么转转这么难爬? 那天下午,我正试图帮一个做二手手机市场分析的朋友抓取转转平台上的商品数据。按照常规思路,我熟练地打开浏览器开发者工具,找到商品列表页的请求,复制下 cU…

2026/10/9 11:17:40 阅读更多 →
DeepSeek与豆包多模态识图能力对比:从技术原理到应用场景

DeepSeek与豆包多模态识图能力对比:从技术原理到应用场景

1. 项目概述:一场关于“识图”能力的趣味对决最近在AI圈子里,一个挺有意思的对比测试火了起来,标题就叫“笑抽了!DeepSeek识图,豆包完胜了!”。这标题一看就带着点戏谑和看热闹不嫌事大的味道,但…

2026/10/8 21:48:31 阅读更多 →

最新新闻

工业AI质检大模型技术方案:小样本快速换线与边缘部署实战

工业AI质检大模型技术方案:小样本快速换线与边缘部署实战

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

2026/10/11 1:26:28 阅读更多 →
从 push 到上线只差一条 Git 钩子:OpenShip CI/CD 全链路时序拆解

从 push 到上线只差一条 Git 钩子:OpenShip CI/CD 全链路时序拆解

从 push 到上线只差一条 Git 钩子:OpenShip CI/CD 全链路时序拆解 【免费下载链接】openship Self-hosted deployment platform 项目地址: https://gitcode.com/GitHub_Trending/ope/openship "推代码即上线"这个承诺,托管平台做了十几…

2026/10/11 1:26:28 阅读更多 →
sqlmap注入Drupal < 7.32 “Drupalgeddon“ SQL注入漏洞(CVE-2014-3704)

sqlmap注入Drupal < 7.32 “Drupalgeddon“ SQL注入漏洞(CVE-2014-3704)

一、复现教程 Drupal < 7.32 "Drupalgeddon" SQL注入漏洞&#xff08;CVE-2014-3704&#xff09; Drupal是一个使用PHP编写的免费开源的Web内容管理框架&#xff0c;在GNU通用公共许可证下分发。 在Drupal Core 7.32版本之前的7.x版本中&#xff0c;数据库抽象…

2026/10/11 1:26:28 阅读更多 →
用知识图谱构建电影问答系统:Neo4j+Python实战指南

用知识图谱构建电影问答系统:Neo4j+Python实战指南

简介&#xff1a;这是一套面向高校计算机及相关专业学生&#xff08;如人工智能、自动化、电子信息等&#xff09;的毕业设计级知识图谱实践项目&#xff0c;聚焦电影领域问答场景&#xff0c;解决结构化语义查询与自然语言理解落地问题。资源共45个文件&#xff0c;涵盖7个核心…

2026/10/11 1:26:28 阅读更多 →
让插图更好看的3种模式:AutoFigure AI图像增强功能(none/code/code2prompt)完整解析

让插图更好看的3种模式:AutoFigure AI图像增强功能(none/code/code2prompt)完整解析

让插图更好看的3种模式&#xff1a;AutoFigure AI图像增强功能&#xff08;none/code/code2prompt&#xff09;完整解析 【免费下载链接】AutoFigure 项目地址: https://gitcode.com/gh_mirrors/au/AutoFigure AutoFigure 是一个开源的 AI 科学插图生成系统&#xff08…

2026/10/11 1:26:28 阅读更多 →
基于CNN的图像风格迁移毕设实战:VGG19原理、PyTorch源码与调参避坑指南

基于CNN的图像风格迁移毕设实战:VGG19原理、PyTorch源码与调参避坑指南

简介&#xff1a;这是一份面向计算机、人工智能、通信工程等专业学生与教师的毕业设计级项目源码&#xff0c;基于CNN卷积神经网络实现图像与视频风格迁移&#xff0c;适合课程设计、毕设答辩或项目初期立项演示&#xff0c;也便于具备一定Python基础的学习者在此基础上二次开发…

2026/10/11 1:25:27 阅读更多 →

日新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介&#xff1a;基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码&#xff0c;面向计算机相关专业课程设计与期末大作业学生&#xff0c;以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程&#xff0c;…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程&#xff1a;键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化&#xff0c;十个新手有八个栽在"往输入框里填东西"这件事上&#xff1a;要么填不进去&#xff0c;要么填了一半&#xff0c;要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程&#xff1a;阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀&#xff1a;什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面&#xff0c;跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介&#xff1a;基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码&#xff0c;面向计算机相关专业课程设计与期末大作业学生&#xff0c;以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程&#xff0c;…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程&#xff1a;键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化&#xff0c;十个新手有八个栽在"往输入框里填东西"这件事上&#xff1a;要么填不进去&#xff0c;要么填了一半&#xff0c;要么直接把原来内容追加在后面。这背后的根因&…

2026/10/11 0:00:27 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程&#xff1a;阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀&#xff1a;什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面&#xff0c;跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/10 5:23:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/10 10:38:42 阅读更多 →