c++ - clang 格式在单行上捕获空语句

标签 c++ format try-catch clang-format catch-block

我想知道是否有可能让 clang 格式具有以下异常处理格式。

// Scenario 1: Catch and ignore exception
try
{
  DoWork();
}
catch (const SomeException&) {}

// Scenario 2: Handle exception
try
{
  DoWork();
}
catch (const SomeException& Exception)
{
  // Code handling exception.
}

我无法在单行上获得场景 1 格式,它更喜欢在 { 之前放置一个新行,然后取决于 SplitEmptyFunction 将是:

// Scenario 1: Catch and ignore exception (SplitEmptyFunction is true)
try
{
  DoWork();
}
catch (const SomeException&)
{}

// Scenario 1: Catch and ignore exception (SplitEmptyFunction is false)
try
{
  DoWork();
}
catch (const SomeException&)
{
}

我是否错过了设置,或者这是不可能的?

最佳答案

目前我的工作是将 SplitEmptyFunction 保持为 false 并应用 post clang 格式 hack 以使用 perl 正则表达式将空捕获更改为在一行上:

  # Hack - allow empty catch statements on a single line.
  if ($line =~ /^.+catch.+$/ &&
      $lines[$lineNo + 1] =~ /^ +\{ *$/ &&
      $lines[$lineNo + 2] =~ /^ +\} *$/)
  {
    $line = $line." {}";
    # Flag following lines when iterated over to be ignored.
    $lines[$lineNo + 1] = "clang_format_no_op_entire_statement";
    $lines[$lineNo + 2] = "clang_format_no_op_entire_statement";
  }

关于c++ - clang 格式在单行上捕获空语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59295462/

相关文章:

JavaScript 错误处理传递给reduce 的异步函数

c++ - 用字符串文字构造一个对象

c++ - 实现 3d vector 数组的最佳方法是什么?

c++ - 如何在 C++ 中将十六进制值的字符数组转换为单个整数值?

java - 更改将元素输入矩阵的方式 - Java 使用 Scanner

Java 8 : Reflection Field. get() try catch 错误

C++03 链接器 "already defined symbol"没有出现在中间文件中

c++ - C++中的cout浮点格式

php - 如何在 php 中格式化带有 00 前缀的数字?

java - 链接列表和 Try/Catch