C++-Formatierungskonventionen für EditorConfig

Sie können Ihrem Projekt EditorConfig-Dateien hinzufügen, um die C++-Formatierung zu konfigurieren, um einen konsistenten Codestil für alle Personen zu erzwingen, die zum Projekt beitragen. Sowohl Visual Studio als auch Visual Studio Code verfügen über integrierte EditorConfig-Unterstützung für jede der globalen Visual Studio C++-Formatierungseinstellungen. Die EditorConfig-Einstellungen werden in einer .editorconfig Datei gespeichert. Wenn diese Datei in Ihrem Projekt vorhanden ist, hat sie Vorrang vor den Visual Studio Formatierungseinstellungen.

In diesem Dokument werden alle EditorConfig C++-Formatierungseinstellungen aufgeführt, die von Visual Studio und Visual Studio Code unterstützt werden.

C++ verfügt über zusätzliche .editorconfig Einstellungen, die keine Formatierungseinstellungen sind. Diese Einstellungen werden mit den von ihnen konfigurierten Features dokumentiert:

Für weitere Informationen zu:

C++-Formatierungskonventionen

C++-Formatierungs-EditorConfig-Einstellungen werden mit dem Präfix versehen cpp_. Hier ist ein Beispiel dafür, wie eine .editorconfig Datei aussehen könnte:

[*.{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

Der Rest dieses Artikels listet alle EditorConfig C++-Formatierungseinstellungen auf, die von Visual Studio und VS Code unterstützt werden.

Einzugseinstellungen

Einzüge geschweifte Klammern

  • Name: cpp_indent_braces
  • Werte: true, false

Einzug jeder Zeile relativ zu

  • Namen: cpp_indent_multi_line_relative_to
  • Werte:
    • outermost_parenthesis - Wenn eine neue Zeile eingegeben wird, wird sie relativ zur äußersten offenen Klammer eingezogen.
    • innermost_parenthesis - Wenn eine neue Zeile eingegeben wird, wird sie relativ zur innersten offenen Klammer eingezogen.
    • statement_begin - Wenn eine neue Zeile eingegeben wird, wird sie relativ zum Anfang der aktuellen Anweisung eingezogen.

Richten Sie neue Zeilen innerhalb von Klammern aus, wenn ich sie ein gebe

  • Namen: cpp_indent_within_parentheses
  • Werte:
    • align_to_parenthesis - Ausrichten von Inhalten an der öffnenden Klammer.
    • indent - Neue Zeilen einziehen.

Verwenden Sie im vorhandenen Code nicht die Einstellung für die Ausrichtung neuer Zeilen innerhalb von Klammern.

  • Namen: cpp_indent_preserve_within_parentheses
  • Werte: true, false

Inhalt des Einzugs von Groß-/Kleinschreibung

  • Namen: cpp_indent_case_contents
  • Werte: true, false

Groß-/Kleinschreibungsbezeichnungen einziehen

  • Name: cpp_indent_case_labels
  • Werte: true, false

Einrücken geschweifte Klammern nach einer Case-Anweisung

  • Namen: cpp_indent_case_contents_when_block
  • Werte: true, false

Einzüge von Lambda-Klammern, die als Parameter verwendet werden

  • Namen: cpp_indent_lambda_braces_when_parameter
  • Werte: true, false

Position der Gehetobeschriftungen

  • Namen: cpp_indent_goto_labels
  • Werte:
    • one_left - Ein Einzug nach links
    • leftmost_column - In die spalte ganz links verschieben
    • none - Einzug verlassen

Position von Präprozessordirektiven

  • Namen: cpp_indent_preprocessor
  • Werte:
    • one_left - Ein Einzug nach links
    • leftmost_column - In die spalte ganz links verschieben
    • none - Einzug verlassen

Einzugs-Zugriffsbezeichner

  • Namen: cpp_indent_access_specifiers
  • Werte: true, false

Einzugsnamespaceinhalte

  • Namen: cpp_indent_namespace_contents
  • Werte: true, false

Beibehalten des Einzugs von Kommentaren

  • Name: cpp_indent_preserve_comments
  • Werte: true, false

Newline-Einstellungen

Position der offenen geschweiften Klammern für Namespaces

  • Namen: cpp_new_line_before_open_brace_namespace
  • Werte:
    • new_line - Wechseln zu einer neuen Zeile
    • same_line - Beibehalten der gleichen Zeile, aber Hinzufügen eines Leerzeichens vor
    • ignore - Keine automatische Neupositionierung

Position offener geschweifte Klammern für Typen

  • Namen: cpp_new_line_before_open_brace_type
  • Werte:
    • new_line - Wechseln zu einer neuen Zeile
    • same_line - Beibehalten der gleichen Zeile, aber Hinzufügen eines Leerzeichens vor
    • ignore - Keine automatische Neupositionierung

Position von offenen geschweiften Klammern für Funktionen

  • Namen: cpp_new_line_before_open_brace_function
  • Werte:
    • new_line - Wechseln zu einer neuen Zeile
    • same_line - Beibehalten der gleichen Zeile, aber Hinzufügen eines Leerzeichens vor
    • ignore - Keine automatische Neupositionierung

Position der geöffneten geschweiften Klammern für Steuerblöcke

  • Namen: cpp_new_line_before_open_brace_block
  • Werte:
    • new_line - Wechseln zu einer neuen Zeile
    • same_line - Beibehalten der gleichen Zeile, aber Hinzufügen eines Leerzeichens vor
    • ignore - Keine automatische Neupositionierung

Position von offenen geschweiften Klammern für Lambdas

  • Namen: cpp_new_line_before_open_brace_lambda
  • Werte:
    • new_line - Wechseln zu einer neuen Zeile
    • same_line - Beibehalten der gleichen Zeile, aber Hinzufügen eines Leerzeichens vor
    • ignore - Keine automatische Neupositionierung

Platzieren von Bereichsklammern in separaten Linien

  • Namen: cpp_new_line_scope_braces_on_separate_lines
  • Werte: true, false

Verschieben Sie bei leeren Typen schließende geschweifte Klammern in dieselbe Linie wie öffnende geschweifte Klammern.

  • Name: cpp_new_line_close_brace_same_line_empty_type
  • Werte: true, false

Verschieben Sie bei leeren Funktionskörpern schließende geschweifte Klammern in dieselbe Linie wie öffnende geschweifte Klammern

  • Namen: cpp_new_line_close_brace_same_line_empty_function
  • Werte: true, false

Platzieren von "Catch" und ähnlichen Schlüsselwörtern in einer neuen Zeile

  • Namen: cpp_new_line_before_catch
  • Werte: true, false

"else" in einer neuen Zeile platzieren

  • Namen: cpp_new_line_before_else
  • Werte: true, false

Platzieren von "while" in einer Do-While-Schleife in einer neuen Zeile

  • Namen: cpp_new_line_before_while_in_do_while
  • Werte: true, false

Abstandseinstellungen

Abstand zwischen Funktionsnamen und Öffnen von Klammern von Argumentlisten

  • Namen: cpp_space_before_function_open_parenthesis
  • Werte:
    • insert - Einfügen eines Leerzeichens
    • remove - Leerzeichen entfernen
    • ignore - Keine Leerzeichen ändern

Einfügen von Leerzeichen in Klammern einer Argumentliste

  • Name-Werte cpp_space_within_parameter_list_parentheses : true, false

Leerzeichen zwischen Klammern einfügen, wenn die Argumentliste leer ist

  • Namen: cpp_space_between_empty_parameter_list_parentheses
  • Werte: true, false

Einfügen von Leerzeichen zwischen Schlüsselwort und öffnender Klammer in Steuerelementflussanweisungen

  • Name: cpp_space_after_keywords_in_control_flow_statements
  • Werte: true, false

Einfügen von Leerzeichen in Klammern einer Steuerelement-Anweisung

  • Namen: cpp_space_within_control_flow_statement_parentheses
  • Werte: true, false

Einfügen von Leerzeichen vor dem Öffnen der Klammer von Lambda-Argumentlisten

  • Namen: cpp_space_before_lambda_open_parenthesis
  • Werte: true, false

Einfügen von Leerzeichen in Klammern einer C-Formatvorlage

  • Namen: cpp_space_within_cast_parentheses
  • Werte: true, false

Einfügen von Leerzeichen nach schließenden Klammern der C-Formatvorlage

  • Namen: cpp_space_after_cast_close_parenthesis
  • Werte: true, false

Einfügen von Leerzeichen in Klammern eines Klammernausdrucks

  • Name: cpp_space_within_expression_parentheses
  • Werte: true, false

Einfügen von Leerzeichen vor dem Öffnen der geschweiften Klammern von Blöcken

  • Namen: cpp_space_before_block_open_brace
  • Werte: true, false

Einfügen von Leerzeichen zwischen leeren geschweiften Klammern

  • Namen: cpp_space_between_empty_braces
  • Werte: true, false

Einfügen von Leerzeichen vor dem Öffnen der geschweiften Klammer für einheitliche Initialisierungs- und Initialisierungslisten

  • Namen: cpp_space_before_initializer_list_open_brace
  • Werte: true, false

Einfügen von Leerzeichen in geschweifte Klammern von Uniform Initialisierungs- und Initialisierungslisten

  • Namen: cpp_space_within_initializer_list_braces
  • Werte: true, false

Beibehalten von Leerzeichen innerhalb einheitlicher Initialisierungs- und Initialisierungslisten

  • Name: cpp_space_preserve_in_initializer_list
  • Werte: true, false

Einfügen von Leerzeichen vor dem Öffnen eckigen Klammern

  • Namen: cpp_space_before_open_square_bracket
  • Werte: true, false

Einfügen von Leerzeichen in eckige Klammer

  • Namen: cpp_space_within_square_brackets
  • Werte: true, false

Einfügen von Leerzeichen vor leeren eckigen Klammern

  • Namen: cpp_space_before_empty_square_brackets
  • Werte: true, false

Einfügen des Leerraums zwischen leeren eckigen Klammern

  • Namen: cpp_space_between_empty_square_brackets
  • Werte: true, false

Gruppieren von eckigen Klammern für mehrdimensionale Arrays zusammen

  • Name: cpp_space_group_square_brackets
  • Werte: true, false

Einfügen von Platz in eckigen Klammern für Lambdas

  • Namen: cpp_space_within_lambda_brackets
  • Werte: true, false

SpaceBetweenEmptyLambdaBrackets

  • Namen: cpp_space_between_empty_lambda_brackets
  • Werte: true, false

Einfügen von Leerzeichen vor Kommas

  • Namen: cpp_space_before_comma
  • Werte: true, false

Einfügen von Leerzeichen nach Kommas

  • Namen: cpp_space_after_comma
  • Werte: true, false

Entfernen von Leerzeichen vor und nach Memberoperatoren

  • Name: cpp_space_remove_around_member_operators
  • Werte: true, false

Einfügen des Leerzeichens vor dem Doppelpunkt für die Basis in Typdeklarationen

  • Namen: cpp_space_before_inheritance_colon
  • Werte: true, false

Einfügen von Leerzeichen vor Doppelpunkt für Konstruktoren

  • Namen: cpp_space_before_constructor_colon
  • Werte: true, false

Entfernen von Leerzeichen vor Semikolons

  • Namen: cpp_space_remove_before_semicolon
  • Werte: true, false

Einfügen von Leerzeichen nach Semikolons

  • Namen: cpp_space_after_semicolon
  • Werte: true, false

Entfernen von Leerzeichen zwischen unären Operatoren und ihren Operanden

  • Name: cpp_space_remove_around_unary_operator
  • Werte: true, false

Abstand für binäre Operatoren

  • Namen: cpp_space_around_binary_operator
  • Werte:
    • insert - Einfügen von Leerzeichen vor und nach binären Operatoren.
    • remove - Entfernen von Leerzeichen um binäre Operatoren.
    • ignore - Ändern Sie keine Leerzeichen um binäre Operatoren.

Abstand für Zuordnungsoperatoren

  • Namen: cpp_space_around_assignment_operator
  • Werte:
    • insert - Fügen Sie Leerzeichen um Zuordnungsoperatoren ein.
    • remove - Entfernen von Leerzeichen um Zuordnungsoperatoren.
    • ignore – Ändern Sie keine Leerzeichen um Zuordnungsoperatoren.

Zeiger/Verweisausrichtung

  • Namen: cpp_space_pointer_reference_alignment
  • Werte:
    • left - Linksbündig ausrichten.
    • center - Mitte ausrichten.
    • right - Rechtsbündig ausrichten.
    • ignore - Unverändert lassen.

Abstand für bedingte Operatoren

  • Namen: cpp_space_around_ternary_operator
  • Werte:
    • insert - Fügen Sie Leerzeichen um bedingte Operatoren ein.
    • remove - Entfernen von Leerzeichen um bedingte Operatoren.
    • ignore – Ändern Sie keine Leerzeichen um bedingte Operatoren.

Umbruchoptionen

Umbruchoptionen für Blöcke

  • Namen: cpp_wrap_preserve_blocks
  • Werte:
    • one_liners - Schließen Sie keine einzeiligen Codeblöcke um.
    • all_one_line_scopes - Schließen Sie Codeblöcke nicht um, wenn sich öffnende und schließende geschweifte Klammern in der nächsten Zeile befinden.
    • never – Wenden Sie immer neue Zeileneinstellungen für Blöcke an.

Siehe auch