【问题标题】:How to avoid clang-format to format two separate '>' into a shift?如何避免clang-format将两个单独的'>'格式化为一个班次?
【发布时间】:2017-10-22 09:27:02
【问题描述】:

当我使用 clang 格式化我的 C++ 代码时,我遇到了一个问题:

priority_queue<int, vector<int>, greater<int> > q;

会自动格式化成:

priority_queue<int, vector<int>, greater<int>> q;

两个单独的'>'将被格式化成一个移位>>。

那么我应该如何配置.clang-format文件来避免这种情况呢?

【问题讨论】:

  • 这不是一个转变,因为 C++11 在语法上与第一个相同。
  • 应该这样格式化
  • 但这会导致错误:'>>' 应该是 '> >' 在嵌套模板参数列表中
  • 这只会是旧编译器的问题。这是您的问题,您必须使用旧的 C++11 之前的编译器吗?
  • 是的,因为我正在向 OJ 提交代码,它不支持 C++11。

标签: c++ c++03 clang-format


【解决方案1】:

您可以使用标准选项。您需要 C++03 选项(包括 C++98),因为它会在模板中格式化双精度 &gt; 以在它们之间包含一个空格。

Standard: Cpp03

您甚至可以改用Auto,以便clang-format 可以自动检测使用的C++ 版本。

【讨论】:

  • 另外,Standard 选项也可以设置为Auto,这样如果看起来像 C++11 代码就会被格式化为 C++11,而 C ++03 否则。 Cpp03(或等效地,C++03)在 OP 的特定情况下更有意义,但如果 OP 想要全局设置它,Auto 可能更合适。
  • @hvd Auto 不是默认的吗?所以假设 OP 不知道“标准”,Auto 不能正常工作?
  • 不,默认是Cpp11,至少根据我系统的clang-format -dump-config输出。
  • @hvd 啊。谢谢(你的)信息! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-17
  • 2020-04-11
  • 1970-01-01
  • 2017-10-30
  • 2019-06-18
相关资源
最近更新 更多