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:
- Usando um arquivo EditorConfig no Visual Studio, consulte Definir estilos de codificação consistentes com EditorConfig.
- Crie manualmente um arquivo EditorConfig com base nas configurações de formatação do clang, consulte clangformat. Renomeie esse arquivo
.editorconfig
e salve-o em seu projeto.
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 esquerdaleftmost_column
– mover para a coluna mais à esquerdanone
– deixar recuado
Posição das diretivas de pré-processador
- Nome:
cpp_indent_preprocessor
- Valores:
one_left
– um recuo para a esquerdaleftmost_column
– mover para a coluna mais à esquerdanone
– 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 linhasame_line
– manter na mesma linha, mas adicionar um espaço antesignore
– 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 linhasame_line
– manter na mesma linha, mas adicionar um espaço antesignore
– 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 linhasame_line
– manter na mesma linha, mas adicionar um espaço antesignore
– 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 linhasame_line
– manter na mesma linha, mas adicionar um espaço antesignore
– 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 linhasame_line
– manter na mesma linha, mas adicionar um espaço antesignore
– 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çoremove
– remover espaçosignore
– 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.