2.1 KiB
2.1 KiB
C Code Style Guide für CLI-Projekte
🔧 Allgemeines
- Zeichencodierung: UTF-8 (ohne BOM)
- Zeilenenden: LF (
\n
) – plattformunabhängig - Einrückung: 4 Leerzeichen (keine Tabs)
- Maximale Zeilenlänge: 100 Zeichen (Ausnahme: ASCII-Bäume oder Formatstrings)
🧱 Präprozessor-Direktiven
#ifndef APP_H
#define APP_H
// Keine Einrückung bei #define, #ifdef, #endif
// Kommentare nach #endif zur Orientierung bei größeren Headern
#endif // APP_H
📦 Header-Dateien (.h
)
- Funktionsprototypen sind nicht eingerückt
- Kommentare über dem Prototyp mit Doxygen-Stil (
/** ... */
) - Header Guards oder
#pragma once
– aber nicht beides
/**
* @brief Führt rekursive Verzeichnissuche durch.
*
* @param base_path Startpfad
* @param depth Rekursionstiefe (nur zur Einrückung)
*/
void scan_directory(const char *base_path, int depth);
🧠 Funktionen
int main(int argc, char *argv[]) {
// Code beginnt eingerückt
if (argc > 1) {
printf("Pfad: %s\n", argv[1]);
}
return 0;
}
- Funktionsklammern immer öffnend auf derselben Zeile
- Immer mit Rückgabetyp (
void
,int
, etc.) - Keine leeren Parameterlisten →
void
verwenden (int foo(void)
)
🌳 Einrückung & Blöcke
if (ok) {
mach_was();
} else {
mach_anders();
}
if
,else
,while
,for
– immer mit{}
– auch bei einzeiligen Blöcken- Klammern auf derselben Zeile
- Keine überflüssigen Leerzeilen innerhalb eines Blocks
🧾 Kommentare
- Doxygen-kompatibel für alles, was extern verwendet wird
- Inline-Kommentare nur bei nicht sofort ersichtlicher Logik
// Rekursion starten, wenn Verzeichnis
scan_directory(sub_path, depth + 1);
📁 Dateibenennung
Elementtyp | Beispiel |
---|---|
Header-Dateien | app.h |
Implementierung | app.c |
Main-Einstieg | main.c |
Konstanten/Makros | config.h |
📚 Optionaler Zusatz für Tools
- Doxygen mit
Doxyfile
clang-format
für Einrückung und Formatierungcppcheck
für statische Analyse