VSCode clang format 代码风格格式化 Alt+Shift+F | Visual Studio, LLVM, Google, Chromium, Mozilla, WebKit, Mi

如何在VSCode中对代码格式化

打开一个test.cpp文件,按Alt+Shift+F可以对当前文件执行格式化操作,比如

  • 自动调整缩进
  • 自动调整大括号的位置
  • 自动调整换行限制宽度等

文件 - 偏好 - 设置,搜索format, 可以看到一个配置选项,默认为Visual Studio,可以换成LLVMGoogleMozilla等,也可以设置为自定义的配置参数。

  • 如图是我习惯的格式,设置为:{ BasedOnStyle: WebKit, BreakBeforeBraces: Linux}。主要特点是:
    • 4空格缩进
    • if for语句后的大括号{在同一行
    • 以及function, class, namespace的风格都比较顺眼
      在这里插入图片描述
  • 参数字段BreakBeforeBraces 是指大括号{}的位置,有几个值可选:
    • Linux: 最符合我的习惯

      if (...) {
          printf(...);
      } else {
          printf(...);
      }
      
    • Stroustrup: C++祖师爷的风格,主要特点是
      描述

      if (...) {
          printf(...);
      } 
      else {
          printf(...);
      }
      
    • Allman: 会把大括号{单独放到下一行,我觉得很浪费纵向屏幕空间,不利于代码的阅读理解

      if (...) 
      {
          printf(...);
      } 
      else 
      {
          printf(...);
      }
      

相关的插件应该只装了微软的3个C/C++插件:
描述

不同格式化风格的主要特点

  • Visual Studio: 和下面几个的主要区别是命名空间内的东西会有缩进,其他几个都是和namespace同一缩进。
    namespace test
    {
        template <typename T>
        void
        print(T &&t)
        {
            std::cout << t << std::endl;
        }
    
    } // namespace test
    
  • LLVM: template和返回值与函数名在同一行;另外会把单行函数格式化为单行
    template <typename T> void print(T &&t) { std::cout << t << std::endl; }
    
  • Google、Chromium:类的访问限制符publicprivateclass不对齐
    class Test {
     public:
      Test(std::string name) : name_(std::move(name)) {}
    
      void run() {
        std::cout << "Running test " << name_ << "..." << std::endl;
        run_();
        std::cout << "Test " << name_ << " passed." << std::endl;
      }
    
     private:
      std::string name_;
    }
    
  • Mozilla、GNU: 函数定义处,会把函数返回值的类型放到上一行
    template<typename T>
    void
    print(T&& t)
    {
      std::cout << t << std::endl;
    }
    
  • WebKit:和其他几个的主要区别是默认4空格缩进,而且大括号单独一行,其他都是2空格,大括号在行尾,算是最符合我习惯的,调整大括号位置即可
    • WebKit 是一个跨平台的 Web 浏览器引擎,苹果的 Safari、谷歌的 Chrome 浏览器都是基于这个框架来开发的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值