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

如何在C++ raw string literal中添加可被正确解析的注释?

不存在编译器原生支持的方法,可以在raw string字面量的内部插入会被自动忽略的注释。

原因很明确:raw string字面量的核心设计目的就是完全保留分界符之间的所有字符,不做任何转义、过滤处理,你写的//、/* */这类看似注释的内容,都会被原封不动计入最终的字符串值,这是raw string和普通字符串字面量的核心差异,你的需求确实和raw string的设计初衷相悖。

你提到的拆分拼接其实是目前最规范、零开销的解决方案,调整格式后可读性并不差:

const char* s1 = R"foo(
Hello
)foo"
// Say hello to the whole world because we don't know who will run the program.
R"foo(
  World
)foo";

C++标准规定相邻的字符串字面量会在编译期自动完成拼接,不管是普通字符串还是raw string都适用,整个过程没有任何运行时开销,最终得到的字符串和你写在同一个raw string里的内容完全一致。

如果实在不想拆分字符串,只能使用非原生方案:比如在raw string内部用自定义的特殊标记包裹注释,再通过自定义预编译脚本在正式编译前把注释内容过滤掉,但这种方案需要额外配置构建流程,对大多数场景来说得不偿失。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 14:45:01