JetBrains Rider 2025.2 Help

C++ 的编码辅助

大多数 JetBrains Rider 的编码辅助功能也支持 C++。 您可以在 编码辅助 部分的相关主题中找到这些功能的详细信息。

在本主题中,您可以找到一些在 C++ 中使用编码辅助功能的示例。

默认情况下, 代码检查快速修复上下文操作在所有解决方案文件中可用。 如果需要,您可以通过 在解决方案外部的文件中启用检查、快速修复和上下文操作 复选框在 JetBrains Rider 设置 语言与框架 | C++ | 检查 页的 Ctrl+Alt+S 中启用这些功能,以支持解决方案引用的外部文件。

当您使用自定义编译器工具链时,提供额外的编译属性可能对更好的编码辅助有所帮助。 要指定编译属性,请在解决方案资源管理器中选择您的项目,然后转到属性中的 ReSharper 部分。 您可以指定额外的包含目录、添加预处理器定义以及设置语言标准:

ReSharper C++:附加项目属性

设置将保存在项目文件旁边的 .vcxproj.DotSettings 文件中。 请注意,这些附加属性不会影响编译。

代码补全

自动和基本补全

在 C++ 文件中,您可以在编写代码时使用 自动基本 Ctrl+Space 补全。 例如,您可以快速添加来自不同命名空间的枚举成员:

C++ 中的自动补全

选定的补全项会显示一个带有语法高亮的签名和文档的弹出窗口。 If necessary, you can disable this popup by clearing the 在 _ 毫秒内显示参数信息弹窗 checkbox on the 编辑器 | 常规 | 代码完成 page of JetBrains Rider 设置 Ctrl+Alt+S.

C++ 中的基本补全

导入符号补全

当您想要使用的符号未通过相应的 #包含 导入到当前文件中,但它已在标准库或解决方案的其他位置定义时,您可以按 Ctrl+Alt+Space 快速在补全建议中找到此符号:

JetBrains Rider:C++ 中的导入符号补全

Optionally, you can include import symbol suggestions in the suggestion lists of automatic and basic completion by selecting 在基本补全中显示导入条目 on the 语言与框架 | C++ | 代码补全 page of JetBrains Rider 设置 Ctrl+Alt+S.

请注意,这会带来性能影响(因为每次 JetBrains Rider 构建补全列表时,都需要查看解决方案中的所有符号以匹配它们),因此默认情况下是禁用的。

点/箭头补全助手

当您调用一个方法时,您可以始终键入一个点 或一个箭头 -> ,并在补全列表中获取所有可用的方法。 与 /-> 不匹配的方法以灰色显示。 如果您选择了这样的一个方法, /-> 将自动更正:

在补全中将点替换为箭头

生成式补全

生成式补全 建议也可用。 例如,当您在对象上调用成员函数声明时...

C++ 中的生成式补全

JetBrains Rider 会生成以下函数:

C++ 中的生成式补全

后缀补全

C++ 中的后缀补全非常类似于 C# 的扩展方法。 如果您在表达式后键入一个点 或一个箭头 -> ,JetBrains Rider 将建议接受该表达式作为第一个参数的自由函数。 当您接受建议时,JetBrains Rider 会重写您的代码,使该表达式作为第一个参数传递:

JetBrains Rider C++:后缀模板

后缀补全还包括 后缀模板 ,它不是查找合适的方法,而是让您快速用常用的语言结构包装表达式。

代码补全中的自由函数

一个常见的 C++ 编码实践是优先使用非成员非友元函数而不是成员函数。 这是增加封装并尽可能保持类接口最小化的好方法。 当您在表达式后输入点 或箭头 -> 时,接受该表达式作为第一个参数的自由函数将在成员函数之后的补全列表中被建议:

ReSharper C++:代码补全中的自由函数

If you do not want to have free functions in the completion suggestions, you can clear the corresponding checkbox on the 语言与框架 | C++ | 代码补全 page of JetBrains Rider 设置 Ctrl+Alt+S.

依赖代码中的代码补全

JetBrains Rider 会自动使用默认模板参数为依赖代码提供补全建议。 在模板主体中键入时,如果参数没有类型信息,代码补全可能不可用。 但是,对于具有默认参数的模板参数,JetBrains Rider 将基于这些默认参数提供补全建议。

JetBrains Rider C++:依赖代码中的代码补全

导入项的代码补全

当启用 导入符号补全 时,JetBrains Rider 的补全列表还会建议当前文件中未包含的头文件中的项目。 如果一个类未包含在当前文件中,补全列表将建议两个选项:插入一个 include 指令或添加一个前向声明。 A context menu with both options is shown by default, but you can change the default behavior on the 语言与框架 | C++ | 代码补全 page of JetBrains Rider 设置 Ctrl+Alt+S.

JetBrains Rider C++:导入项的代码补全

补全语句

完整语句 功能会插入所需的语法元素,并将插入点放置在您可以开始键入下一条语句的位置。 它允许您使用 Ctrl+Shift+Enter 快捷键,而无需执行许多其他小操作。 例如,此快捷键会自动插入大括号和分号,然后将插入点放置在您可以继续编写主体的位置:

JetBrains Rider C++:完整语句

语法高亮和工具提示

默认情况下,JetBrains Rider 提供可配置颜色的扩展 C++ 语法高亮。 如果需要,您可以在 JetBrains Rider 选项的 代码编辑 | C++ | 检查 页上禁用它。 有 20 种标识符类型,您可以对其进行不同的高亮显示。 您可以随时在 Visual Studio 选项(文件 | 设置 | 编辑器 | 配色方案 | C++ )中更改颜色和字体。

配置 C++ 标识符的语法高亮
配置 C++ 标识符的语法高亮

JetBrains Rider 还会用其自己的工具提示替换 Visual Studio 的代码元素工具提示,这些工具提示具有高亮语法、显示方法和字段签名、格式化的 XML 和 Doxygen 注释:

JetBrains Rider:C++ 中的编辑器工具提示

参数信息

无论您是在编写还是研究函数调用,JetBrains Rider 都会帮助您查看该函数所有重载的允许参数的详细信息。 在弹窗中,您将看到所有带参数的公共签名,以及从函数的 XML 文档中提取的简要描述(如果可用)。

当您输入参数时,JetBrains Rider 会自动高亮显示与已输入参数兼容的下一个签名,并将不适用的签名置灰。 要研究现有函数调用的替代签名,请将插入点放在函数的括号内,然后按 Ctrl+P 或从主菜单中选择 查看 | 参数信息

JetBrains Rider C++:参数信息

参数信息工具提示还提供有关在执行聚合初始化时的聚合类成员的详细信息,显示用户定义的二元运算符、已删除函数和隐式生成函数的信息。

在依赖代码中,它从文档注释中获取模板参数的描述,并使用默认模板参数提供有关依赖代码中参数的信息。

JetBrains Rider C++:依赖代码的参数信息

参数信息工具提示可在 JetBrains Rider 设置 Ctrl+Alt+S 页上进行配置。

重新排列代码

代码重排 可快速移动代码元素,扩展或缩小当前范围等。 要重排代码,请在您想要移动的代码元素或选定内容上按 Ctrl+Shift+Alt ,然后按任意箭头键。 如果您在未先选择内容的情况下调用此命令,可移动的元素会自动被选中。

向左移动向右移动 有两种模式,允许您:

  • 重排通常写在单行中的元素(尽管这些模式也适用于多行元素)。 您可以在带大括号的初始化列表中的元素,以及函数或 lambda 参数和参数等上使用 向左移动向右移动

    JetBrains Rider C++:重排参数
  • 将语句或声明移动到紧随其后的区域(向右移动 )或当前区域之外(向左移动):

    JetBrains Rider C++:将一行移动到下一个区域

向上移动向下移动 命令在特定范围内上下重排元素,或在相邻范围之间重排元素。 您可以对语句和声明、switch 语句中的部分、枚举器、try-catch 语句中的 catch 部分、if 语句中的条件或分支等使用 向上移动下移 命令。

JetBrains Rider C++:重排 if 语句

您还可以向上或向下移动开括号或闭括号,以扩展或缩小当前的复合语句、类型或命名空间:

JetBrains Rider C++:更改命名空间范围

适用情况的完整列表:

向左移动并向右移动

向上移动并向下移动

  • 将语句和声明从当前范围移到下一个范围

  • 赋值、二元、折叠或条件表达式中的操作数

  • switch 语句中的 case 标签

  • 下标表达式或数组说明符中的索引

  • 函数/lambda 参数和参数

  • 宏参数和宏调用参数

  • 模板参数和参数

  • 声明中的声明符和结构化绑定

  • 基类型

  • 带大括号的初始化列表中的元素

  • 异常规范中的类型

  • Doxygen HTML 属性

  • C++/CLI 泛型约束中的项目

  • Lambda 捕获

  • 成员初始化器

  • using 声明中的部分

  • 周围范围内的语句和声明

  • enum 声明中的枚举器

  • 复合 if 语句中的分支

  • 嵌套 if 语句中的条件

  • requires 表达式主体中的需求

  • 从 if-else、try-catch 语句的一个子句或 switch 的一个部分移动到另一个部分的语句

  • 语句和声明中的开括号和闭括号(贪婪括号)

  • switch 语句中的 switch 部分

  • try-catch 语句中的 catch 部分

  • Doxygen 命令

  • C++/CLI 泛型约束

上下文操作

JetBrains Rider 提供一组针对 C++ 代码的 上下文操作。 您可以在 JetBrains Rider 设置 的 Editor | Context actions | C++ 页上找到这些操作的完整列表。 如果需要,您还可以通过此页面禁用某些操作。

一旦某个上下文操作可用于当前插入点位置,JetBrains Rider 会在插入点左侧显示相应的 操作指示器 ThemedIcon.ContextAction.Screen.(Gray).png。 然而,有时 JetBrains Rider 会为当前插入点位置提供多个上下文相关的功能。 在这种情况下,与优先级最高的操作对应的操作指示器会显示,其他所有操作仅在您通过单击操作指示器或按下 Alt+Enter 展开 操作列表 时才会出现。上下文操作的优先级最低,因此它们通常出现在操作列表的底部。

以下是一些 C++ 上下文操作的示例:

将枚举转换为字符串(生成枚举到字符串的助手)

此上下文操作为特定枚举生成一个助手函数,将其枚举器转换为相应的字符串。

例如,如果您在以下枚举上调用此操作:

enum class Suit { Diamonds, Hearts, Clubs, Spades };

JetBrains Rider 将为您生成以下函数:

const char* to_string(Suit e) { switch (e) { case Suit::Diamonds: return "Diamonds"; case Suit::Hearts: return "Hearts"; case Suit::Clubs: return "Clubs"; case Suit::Spades: return "Spades"; default: return "unknown"; } }

如果需要,您可以通过 编辑 JetBrains Rider 用于生成的 enum_to_string 活动模板来自定义生成的函数。 例如,您可以配置模板以生成流输出运算符重载:

std::ostream& operator <<(std::ostream& out, Suit e) { switch (e) { case Suit::Diamonds: return out << "Diamonds"; case Suit::Hearts: return out << "Hearts"; case Suit::Clubs: return out << "Clubs"; case Suit::Spades: return out << "Spades"; default: assert(false); return out << "unknown"; } }

生成缺失的 case 语句

在切换枚举时,您可以使用上下文操作生成所有缺失的 case 语句,而不是手动编写所有 case 语句:

C++ 中生成缺失的 case 语句

然后,您只需为每个语句编写所需的逻辑。

C++ 中生成缺失的 case 语句

合并嵌套的 'if' 语句

JetBrains Rider 通过上下文操作帮助您合并嵌套的 'if' 语句:

C++ 中合并嵌套的 'if' 语句

生成实现

JetBrains Rider 帮助您自动创建函数或方法的存根实现。 您始终可以生成内联实现,如果函数定义在头文件中且存在相应的源文件,您可以在源文件中生成实现。

为函数生成实现

将实现移出类范围

如果存在,JetBrains Rider 帮助您将函数或方法的实现从头文件移动到相应的源文件。 应用此上下文操作后,定义将保留在其原始位置,而实现将被移动到源文件。 编辑器上下文也会切换到源文件。

将实现从类范围移到源文件

您还可以使用上下文操作移动当前选定内容中的所有实现。

文档实体

通过此上下文操作,您可以为 C++ 符号生成文档注释。 如果需要,您可以通过 编辑 JetBrains Rider 用于生成的 doc 活动模板来自定义注释存根。

JetBrains Rider:生成文档注释

高亮配对项

当您将插入点放置在配对项之一时,JetBrains Rider 会高亮显示各种匹配项:

  • 匹配的分隔符()[]{}<>

  • 匹配的宏,例如, BEGIN_NAMESPACE/END_NAMESPACE

  • 匹配的格式说明符和参数在 printfboost::format

最后修改日期: 2025年 9月 26日