Konwencje formatowania języka C++ w narzędziu EditorConfig
Możesz dodać pliki EditorConfig do projektu, aby skonfigurować formatowanie języka C++, aby wymusić spójny styl kodu dla wszystkich współtworzyjących projekt. Zarówno programy Visual Studio, jak i Visual Studio Code mają wbudowaną obsługę polecenia EditorConfig dla każdego z globalnych ustawień formatowania programu Visual Studio C++. Ustawienia EditorConfig są przechowywane w .editorconfig
pliku. Gdy ten plik jest obecny w projekcie, ma pierwszeństwo przed ustawieniami formatowania programu Visual Studio.
Ten dokument zawiera listę wszystkich ustawień formatowania EditorConfig C++ obsługiwanych przez programy Visual Studio i Visual Studio Code.
Aby uzyskać więcej informacji na temat:
- Używanie pliku EditorConfig w programie Visual Studio, zobacz Definiowanie spójnych stylów kodowania za pomocą polecenia EditorConfig.
- Ręcznie utwórz plik EditorConfig na podstawie ustawień formatowania clang, zobacz clangformat. Zmień nazwę tego pliku
.editorconfig
i zapisz go w projekcie.
Konwencje formatowania języka C++
Ustawienia edytora formatowania języka C++ są poprzedzone prefiksem cpp_
. Oto przykładowy .editorconfig
wygląd pliku:
[*.{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
W pozostałej części tego dokumentu wymieniono wszystkie ustawienia formatowania EditorConfig C++ obsługiwane przez programy Visual Studio i VS Code.
Ustawienia wcięcia
Wcięcie nawiasów klamrowych
- Nazwa:
cpp_indent_braces
- Wartości:
true
,false
Wcięcie każdego wiersza stosunkowo do
- Nazwa:
cpp_indent_multi_line_relative_to
- Wartości:
outermost_parenthesis
- Gdy nowy wiersz jest wpisany, jest wcięcie stosunkowo do najbardziej zewnętrznego nawiasu otwartego.innermost_parenthesis
- Gdy nowy wiersz jest wpisany, jest wcięcie stosunkowo do najbardziej wewnętrznego nawiasu otwartego.statement_begin
- Gdy nowy wiersz jest wpisany, jest wcięcie stosunkowo na początku bieżącej instrukcji.
W nawiasach wyrównaj nowe wiersze, gdy wpiszę je
- Nazwa:
cpp_indent_within_parentheses
- Wartości:
align_to_parenthesis
- Wyrównaj zawartość do nawiasu otwierającego.indent
— Wcięcie nowych wierszy.
W istniejącym kodzie nie używaj ustawienia do wyrównania nowych wierszy w nawiasach
- Nazwa:
cpp_indent_preserve_within_parentheses
- Wartości:
true
,false
Wcięcie zawartości wielkości liter
- Nazwa:
cpp_indent_case_contents
- Wartości:
true
,false
Wcięcie etykiet wielkości liter
- Nazwa:
cpp_indent_case_labels
- Wartości:
true
,false
Wcięcie nawiasów klamrowych po instrukcji case
- Nazwa:
cpp_indent_case_contents_when_block
- Wartości:
true
,false
Wcięcie nawiasów klamrowych lambda używanych jako parametry
- Nazwa:
cpp_indent_lambda_braces_when_parameter
- Wartości:
true
,false
Położenie etykiet goto
- Nazwa:
cpp_indent_goto_labels
- Wartości:
one_left
- Jedno wcięcie z lewejleftmost_column
— Przechodzenie do kolumny z lewej stronynone
— Pozostaw wcięcie
Położenie dyrektyw preprocesora
- Nazwa:
cpp_indent_preprocessor
- Wartości:
one_left
- Jedno wcięcie z lewejleftmost_column
— Przechodzenie do kolumny z lewej stronynone
— Pozostaw wcięcie
Specyfikatory dostępu wcięcia
- Nazwa:
cpp_indent_access_specifiers
- Wartości:
true
,false
Wcięcie zawartości przestrzeni nazw
- Nazwa:
cpp_indent_namespace_contents
- Wartości:
true
,false
Zachowywanie wcięcia komentarzy
- Nazwa:
cpp_indent_preserve_comments
- Wartości:
true
,false
Ustawienia nowego wiersza
Położenie otwartych nawiasów klamrowych dla przestrzeni nazw
- Nazwa:
cpp_new_line_before_open_brace_namespace
- Wartości:
new_line
- Przejście do nowego wierszasame_line
- Zachowaj na tym samym wierszu, ale dodaj spację przedignore
- Nie zmieniaj położenia automatycznie
Położenie otwartych nawiasów klamrowych dla typów
- Nazwa:
cpp_new_line_before_open_brace_type
- Wartości:
new_line
- Przejście do nowego wierszasame_line
- Zachowaj na tym samym wierszu, ale dodaj spację przedignore
- Nie zmieniaj położenia automatycznie
Położenie otwartych nawiasów klamrowych dla funkcji
- Nazwa:
cpp_new_line_before_open_brace_function
- Wartości:
new_line
- Przejście do nowego wierszasame_line
- Zachowaj na tym samym wierszu, ale dodaj spację przedignore
- Nie zmieniaj położenia automatycznie
Położenie otwartych nawiasów klamrowych dla bloków sterujących
- Nazwa:
cpp_new_line_before_open_brace_block
- Wartości:
new_line
- Przejście do nowego wierszasame_line
- Zachowaj na tym samym wierszu, ale dodaj spację przedignore
- Nie zmieniaj położenia automatycznie
Położenie otwartych nawiasów klamrowych dla lambd
- Nazwa:
cpp_new_line_before_open_brace_lambda
- Wartości:
new_line
- Przejście do nowego wierszasame_line
- Zachowaj na tym samym wierszu, ale dodaj spację przedignore
- Nie zmieniaj położenia automatycznie
Umieść nawiasy klamrowe zakresu w oddzielnych wierszach
- Nazwa:
cpp_new_line_scope_braces_on_separate_lines
- Wartości:
true
,false
W przypadku pustych typów przenieś nawiasy klamrowe zamykające do tego samego wiersza co otwierające nawiasy klamrowe
- Nazwa:
cpp_new_line_close_brace_same_line_empty_type
- Wartości:
true
,false
W przypadku pustych treści funkcji przenieś zamykające nawiasy klamrowe do tego samego wiersza co otwierające nawiasy klamrowe
- Nazwa:
cpp_new_line_close_brace_same_line_empty_function
- Wartości:
true
,false
Umieść słowa kluczowe "catch" i podobne w nowym wierszu
- Nazwa:
cpp_new_line_before_catch
- Wartości:
true
,false
Umieść "else" w nowym wierszu
- Nazwa:
cpp_new_line_before_else
- Wartości:
true
,false
Umieść "while" w pętli do-while w nowym wierszu
- Nazwa:
cpp_new_line_before_while_in_do_while
- Wartości:
true
,false
Ustawienia odstępów
Odstępy między nazwami funkcji a otwarciem nawiasów list argumentów
- Nazwa:
cpp_space_before_function_open_parenthesis
- Wartości:
insert
- Wstaw spacjęremove
- Usuwanie spacjiignore
- Nie zmieniaj spacji
Wstaw spację w nawiasach listy argumentów
- Wartości nazw
cpp_space_within_parameter_list_parentheses
:true
,false
Wstaw spację między nawiasami, gdy lista argumentów jest pusta
- Nazwa:
cpp_space_between_empty_parameter_list_parentheses
- Wartości:
true
,false
Wstawianie odstępu między słowem kluczowym a otwarciem nawiasu w instrukcjach przepływu sterowania
- Nazwa:
cpp_space_after_keywords_in_control_flow_statements
- Wartości:
true
,false
Wstaw spację w nawiasach instrukcji kontrolki
- Nazwa:
cpp_space_within_control_flow_statement_parentheses
- Wartości:
true
,false
Wstaw spację przed otwarciem nawiasu list argumentów lambda
- Nazwa:
cpp_space_before_lambda_open_parenthesis
- Wartości:
true
,false
Wstaw spację w nawiasach rzutowania w stylu C
- Nazwa:
cpp_space_within_cast_parentheses
- Wartości:
true
,false
Wstaw spację po zamknięciu nawiasu rzutowania w stylu C
- Nazwa:
cpp_space_after_cast_close_parenthesis
- Wartości:
true
,false
Wstaw spację w nawiasach wyrażenia nawiasu
- Nazwa:
cpp_space_within_expression_parentheses
- Wartości:
true
,false
Wstaw spację przed otwarciem nawiasu klamrowego bloków
- Nazwa:
cpp_space_before_block_open_brace
- Wartości:
true
,false
Wstaw spację między pustymi nawiasami klamrowymi
- Nazwa:
cpp_space_between_empty_braces
- Wartości:
true
,false
Wstaw spację przed otwarciem nawiasu klamrowego list inicjowania i inicjatora
- Nazwa:
cpp_space_before_initializer_list_open_brace
- Wartości:
true
,false
Wstaw spację w nawiasach klamrowych list inicjowania i inicjatora
- Nazwa:
cpp_space_within_initializer_list_braces
- Wartości:
true
,false
Zachowywanie spacji wewnątrz jednolitych list inicjowania i inicjatora
- Nazwa:
cpp_space_preserve_in_initializer_list
- Wartości:
true
,false
Wstaw spację przed otwarciem nawiasów kwadratowych
- Nazwa:
cpp_space_before_open_square_bracket
- Wartości:
true
,false
Wstaw spację w nawiasie kwadratowym
- Nazwa:
cpp_space_within_square_brackets
- Wartości:
true
,false
Wstaw spację przed pustymi nawiasami kwadratowymi
- Nazwa:
cpp_space_before_empty_square_brackets
- Wartości:
true
,false
Wstaw spację między pustymi nawiasami kwadratowymi
- Nazwa:
cpp_space_between_empty_square_brackets
- Wartości:
true
,false
Grupuj nawiasy kwadratowe dla tablic wielowymiarowych razem
- Nazwa:
cpp_space_group_square_brackets
- Wartości:
true
,false
Wstaw spację w nawiasach kwadratowych dla lambd
- Nazwa:
cpp_space_within_lambda_brackets
- Wartości:
true
,false
SpaceBetweenEmptyLambdaBrackets
- Nazwa:
cpp_space_between_empty_lambda_brackets
- Wartości:
true
,false
Wstaw spację przed przecinkami
- Nazwa:
cpp_space_before_comma
- Wartości:
true
,false
Wstaw spację po przecinkach
- Nazwa:
cpp_space_after_comma
- Wartości:
true
,false
Usuwanie spacji przed operatorami składowymi i po niej
- Nazwa:
cpp_space_remove_around_member_operators
- Wartości:
true
,false
Wstaw spację przed dwukropkiem dla bazy w deklaracjach typów
- Nazwa:
cpp_space_before_inheritance_colon
- Wartości:
true
,false
Wstaw spację przed dwukropkiem dla konstruktorów
- Nazwa:
cpp_space_before_constructor_colon
- Wartości:
true
,false
Usuń spację przed średnikami
- Nazwa:
cpp_space_remove_before_semicolon
- Wartości:
true
,false
Wstaw spację po średnikami
- Nazwa:
cpp_space_after_semicolon
- Wartości:
true
,false
Usuwanie spacji między operatorami jednoargumentowymi i ich operandami
- Nazwa:
cpp_space_remove_around_unary_operator
- Wartości:
true
,false
Odstępy dla operatorów binarnych
- Nazwa:
cpp_space_around_binary_operator
- Wartości:
insert
- Wstaw spacje przed i po operatorach binarnych.remove
- Usuń spacje wokół operatorów binarnych.ignore
— Nie zmieniaj spacji wokół operatorów binarnych.
Odstępy dla operatorów przypisania
- Nazwa:
cpp_space_around_assignment_operator
- Wartości:
insert
- Wstaw spacje wokół operatorów przypisania.remove
- Usuń spacje wokół operatorów przypisania.ignore
— Nie zmieniaj spacji wokół operatorów przypisania.
Wyrównanie wskaźnika/odwołania
- Nazwa:
cpp_space_pointer_reference_alignment
- Wartości:
left
- Wyrównaj do lewej.center
- Wyrównaj do środka.right
- Wyrównaj do prawej.ignore
- Pozostaw niezmienione.
Odstępy dla operatorów warunkowych
- Nazwa:
cpp_space_around_ternary_operator
- Wartości:
insert
- Wstaw spacje wokół operatorów warunkowych.remove
- Usuń spacje wokół operatorów warunkowych.ignore
— Nie zmieniaj spacji wokół operatorów warunkowych.
Opcje zawijania
Opcje zawijania bloków
- Nazwa:
cpp_wrap_preserve_blocks
- Wartości:
one_liners
— Nie zawijaj bloków kodu jednowierszowego.all_one_line_scopes
— Nie zawijaj bloków kodu, w których nawiasy klamrowe otwierające i zamykające znajdują się w następnym wierszu.never
— Zawsze stosuj ustawienia Nowe linie dla bloków.