Compartilhar via


Convenções de formatação de EditorConfig do C++

Você pode adicionar arquivos EditorConfig ao seu projeto para configurar a formatação C++ para impor um estilo de código consistente para todos que contribuem para o projeto. O Visual Studio e o Visual Studio Code têm suporte interno ao EditorConfig para cada uma das configurações globais de formatação do Visual Studio C++. As configurações do EditorConfig são armazenadas em um .editorconfig arquivo. Quando esse arquivo está presente em seu projeto, ele tem precedência sobre as configurações de formatação do Visual Studio.

Este documento lista todas as configurações de formatação EditorConfig C++ compatíveis com o Visual Studio e o Visual Studio Code.

Para saber mais sobre:

Convenções de formatação do C++

As configurações do EditorConfig para formatação do C++ são prefixadas com cpp_. Aqui está um exemplo de como um .editorconfig arquivo pode ser:

[*.{c++,cc,cpp,cxx,h,h++,hh,hpp,hxx,inl,ipp,tlh,tli}]

cpp_indent_case_contents_when_block = true
cpp_new_line_before_open_brace_namespace = same_line

O restante deste documento lista todas as configurações de formatação de C++ do EditorConfig compatíveis com o Visual Studio e o VS Code.

Configurações de recuo

Recuar chaves

  • Nome: cpp_indent_braces
  • Valores true, false

Recuar cada linha com relação a

  • Nome: cpp_indent_multi_line_relative_to
  • Valores:
    • outermost_parenthesis – quando uma nova linha é digitada, ela é recuada relativamente para o parêntese mais externo aberto.
    • innermost_parenthesis – quando uma nova linha é digitada, ela é recuada relativamente para o parêntese aberto mais interno.
    • statement_begin – quando uma nova linha é digitada, ela é recuada relativamente para o início da instrução atual.

Entre parênteses, alinhar as linhas novas à medida que as digito

  • Nome: cpp_indent_within_parentheses
  • Valores:
    • align_to_parenthesis – alinhar conteúdo com o parêntese de abertura.
    • indent – recuar novas linhas.

No código existente, não use a configuração para alinhamento de novas linhas entre parênteses

  • Nome: cpp_indent_preserve_within_parentheses
  • Valores true, false

Recuar conteúdo de case

  • Nome: cpp_indent_case_contents
  • Valores true, false

Recuar rótulos de case

  • Nome: cpp_indent_case_labels
  • Valores true, false

Recuar as chaves após uma instrução case

  • Nome: cpp_indent_case_contents_when_block
  • Valores true, false

Recuar chaves de lambdas usadas como parâmetros

  • Nome: cpp_indent_lambda_braces_when_parameter
  • Valores true, false

Posição dos rótulos goto

  • Nome: cpp_indent_goto_labels
  • Valores:
    • one_left – um recuo para a esquerda
    • leftmost_column – mover para a coluna mais à esquerda
    • none – deixar recuado

Posição das diretivas de pré-processador

  • Nome: cpp_indent_preprocessor
  • Valores:
    • one_left – um recuo para a esquerda
    • leftmost_column – mover para a coluna mais à esquerda
    • none – deixar recuado

Recuar especificadores de acesso

  • Nome: cpp_indent_access_specifiers
  • Valores true, false

Recuar conteúdo de namespace

  • Nome: cpp_indent_namespace_contents
  • Valores true, false

Preservar o recuo dos comentários

  • Nome: cpp_indent_preserve_comments
  • Valores true, false

Configurações de nova linha

Posição das chaves de abertura para namespaces

  • Nome: cpp_new_line_before_open_brace_namespace
  • Valores:
    • new_line – mover para uma nova linha
    • same_line – manter na mesma linha, mas adicionar um espaço antes
    • ignore – não reposicionar automaticamente

Posição das chaves de abertura para tipos

  • Nome: cpp_new_line_before_open_brace_type
  • Valores:
    • new_line – mover para uma nova linha
    • same_line – manter na mesma linha, mas adicionar um espaço antes
    • ignore – não reposicionar automaticamente

Posição das chaves de abertura para funções

  • Nome: cpp_new_line_before_open_brace_function
  • Valores:
    • new_line – mover para uma nova linha
    • same_line – manter na mesma linha, mas adicionar um espaço antes
    • ignore – não reposicionar automaticamente

Posição das chaves de abertura para blocos de controle

  • Nome: cpp_new_line_before_open_brace_block
  • Valores:
    • new_line – mover para uma nova linha
    • same_line – manter na mesma linha, mas adicionar um espaço antes
    • ignore – não reposicionar automaticamente

Posição das chaves de abertura para lambdas

  • Nome: cpp_new_line_before_open_brace_lambda
  • Valores:
    • new_line – mover para uma nova linha
    • same_line – manter na mesma linha, mas adicionar um espaço antes
    • ignore – não reposicionar automaticamente

Colocar chaves de escopo em linhas separadas

  • Nome: cpp_new_line_scope_braces_on_separate_lines
  • Valores true, false

Para tipos vazios, mover as chaves de fechamento para a mesma linha que as chaves de abertura

  • Nome: cpp_new_line_close_brace_same_line_empty_type
  • Valores true, false

Para corpos de função vazios, mover as chaves de fechamento para a mesma linha que as chaves de abertura

  • Nome: cpp_new_line_close_brace_same_line_empty_function
  • Valores true, false

Colocar 'catch' e palavras-chave semelhantes em uma nova linha

  • Nome: cpp_new_line_before_catch
  • Valores true, false

Colocar 'else' em uma nova linha

  • Nome: cpp_new_line_before_else
  • Valores true, false

Colocar 'while' em um loop do-while em uma nova linha

  • Nome: cpp_new_line_before_while_in_do_while
  • Valores true, false

Configurações de espaçamento

Espaçamento entre nomes de funções e parênteses de abertura de listas de argumentos

  • Nome: cpp_space_before_function_open_parenthesis
  • Valores:
    • insert – inserir um espaço
    • remove – remover espaços
    • ignore – não mudar os espaços

Inserir espaço dentro dos parênteses de uma lista de argumentos

  • Valores de nome cpp_space_within_parameter_list_parentheses : true, false

Inserir espaço entre parênteses quando lista de argumentos está vazia

  • Nome: cpp_space_between_empty_parameter_list_parentheses
  • Valores: true, false

Inserir espaço entre palavra-chave e parêntese de abertura em instruções de fluxo de controle

  • Nome: cpp_space_after_keywords_in_control_flow_statements
  • Valores: true, false

Inserir espaço dentro dos parênteses de uma instrução de controle

  • Nome: cpp_space_within_control_flow_statement_parentheses
  • Valores: true, false

Inserir espaço antes de abrir parênteses de listas de argumentos lambda

  • Nome: cpp_space_before_lambda_open_parenthesis
  • Valores: true, false

Inserir espaço dentro dos parênteses de uma conversão de estilo C

  • Nome: cpp_space_within_cast_parentheses
  • Valores: true, false

Inserir espaço depois do parêntese de fechamento de uma conversão de estilo C

  • Nome: cpp_space_after_cast_close_parenthesis
  • Valores: true, false

Inserir espaço dentro dos parênteses de uma expressão entre parênteses

  • Nome: cpp_space_within_expression_parentheses
  • Valores: true, false

Inserir um espaço antes de abrir o colchete de blocos

  • Nome: cpp_space_before_block_open_brace
  • Valores: true, false

Inserir espaço entre chaves vazias

  • Nome: cpp_space_between_empty_braces
  • Valores: true, false

Inserir espaço antes da chave de abertura de listas de inicializadores uniformes e de inicialização

  • Nome: cpp_space_before_initializer_list_open_brace
  • Valores: true, false

Inserir espaço entre chaves de listas de inicializadores uniformes e de inicialização

  • Nome: cpp_space_within_initializer_list_braces
  • Valores: true, false

Preservar os espaços dentro da inicialização uniforme e das listas do inicializador

  • Nome: cpp_space_preserve_in_initializer_list
  • Valores: true, false

Inserir espaço antes dos colchetes de abertura

  • Nome: cpp_space_before_open_square_bracket
  • Valores: true, false

Inserir espaço dentro de colchetes

  • Nome: cpp_space_within_square_brackets
  • Valores: true, false

Inserir espaço antes de colchetes vazios

  • Nome: cpp_space_before_empty_square_brackets
  • Valores: true, false

Inserir espaço entre colchetes vazios

  • Nome: cpp_space_between_empty_square_brackets
  • Valores: true, false

Agrupar colchetes para matrizes multidimensionais

  • Nome: cpp_space_group_square_brackets
  • Valores: true, false

Inserir espaço dentro de colchetes vazios para lambdas

  • Nome: cpp_space_within_lambda_brackets
  • Valores: true, false

SpaceBetweenEmptyLambdaBrackets

  • Nome: cpp_space_between_empty_lambda_brackets
  • Valores: true, false

Inserir espaço antes de vírgulas

  • Nome: cpp_space_before_comma
  • Valores: true, false

Inserir espaço depois de vírgulas

  • Nome: cpp_space_after_comma
  • Valores: true, false

Remover espaços antes e depois de operadores membro

  • Nome: cpp_space_remove_around_member_operators
  • Valores: true, false

Inserir espaço antes de dois pontos para base em declarações de tipo

  • Nome: cpp_space_before_inheritance_colon
  • Valores: true, false

Inserir espaço antes de dois-pontos para construtores

  • Nome: cpp_space_before_constructor_colon
  • Valores: true, false

Remover espaço antes de ponto e vírgula

  • Nome: cpp_space_remove_before_semicolon
  • Valores: true, false

Inserir espaço depois de ponto e vírgula

  • Nome: cpp_space_after_semicolon
  • Valores: true, false

Remover espaços entre operadores unários e os respectivos operandos

  • Nome: cpp_space_remove_around_unary_operator
  • Valores: true, false

Espaçamento para operadores binários

  • Nome: cpp_space_around_binary_operator
  • Valores:
    • insert – inserir espaços antes e depois de operadores binários.
    • remove – remover espaços em torno de operadores binários.
    • ignore – não alterar espaços em torno de operadores binários.

Espaçamento para operadores de atribuição

  • Nome: cpp_space_around_assignment_operator
  • Valores:
    • insert – inserir espaços em torno de operadores de atribuição.
    • remove – remover espaços em torno de operadores de atribuição.
    • ignore – não alterar espaços em torno de operadores de atribuição.

Alinhamento de ponteiro/referência

  • Nome: cpp_space_pointer_reference_alignment
  • Valores:
    • left – alinhar à esquerda.
    • center – alinhar ao centro.
    • right – alinhar à direita.
    • ignore – deixar inalterado.

Espaçamento para operadores condicionais

  • Nome: cpp_space_around_ternary_operator
  • Valores:
    • insert – inserir espaços em torno de operadores condicionais.
    • remove – remover espaços em torno de operadores condicionais.
    • ignore – não alterar espaços em torno de operadores condicionais.

Opções de encapsulamento

Opções de quebra de linha para blocos

  • Nome: cpp_wrap_preserve_blocks
  • Valores:
    • one_liners – não quebrar blocos de código de uma linha.
    • all_one_line_scopes – não quebrar blocos de código em que as chaves de abertura e de fechamento estão na mesma linha.
    • never – sempre aplicar configurações de Linhas Novas para blocos.

Confira também