You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Visual Studio中#if 0屏蔽的原始字符串触发C1071错误是什么原因?

问题原因

这个错误是Visual Studio 2019 16.7及更早版本的传统MSVC预处理器的已知bug导致的,具体触发逻辑如下:

  • 旧版MSVC预处理器在处理#if 0包裹的禁用代码块时,不会正确识别C++11及以上标准引入的原始字符串字面量(R"()"格式)的边界
  • 你代码的原始字符串内部存在/*序列(来自路径通配符/mnt/*.txt),预处理器会错误把这个序列识别为C风格块注释的起始标记,之后持续寻找配对的*/结束标记直到文件末尾都没找到,因此抛出「注释中意外遇到文件结尾」的C1071错误

解决方案

可任选以下一种方式修复:

  • 升级Visual Studio到16.8及以上版本,该版本开始默认启用符合C++标准的新预处理器,不会触发该bug
  • 不升级版本的前提下,在项目属性的「C/C++→命令行」配置页添加编译选项/Zc:preprocessor,手动启用新标准预处理器
  • 临时规避可以将#if 0块内原始字符串中的/*拆分为分开的字符,或者调整原始字符串内容避免出现/*序列

内容的提问来源于stack exchange,提问作者jtooker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 01:36:04