Skip to content

Latest commit

 

History

History
34 lines (29 loc) · 1.14 KB

File metadata and controls

34 lines (29 loc) · 1.14 KB

Coding Style

Formatting

  • Allman braces (.clang-format enforces this)
  • 4-space indentation, no tabs
  • 100-column limit
  • Run make format to auto-fix formatting

Naming

  • snake_case for functions and variables
  • PascalCase for types (structs, enums, typedefs)
  • SCREAMING_CASE for macros and enum values
  • g_ prefix for global variables

Comments

  • // for implementation comments (space after //)
  • /** @brief */ for public API documentation
  • ///< for struct field documentation
  • Never restate what the code does -- explain WHY
  • Trailing // comments only for non-obvious behavior
  • No em dashes, no decorative borders, no ASCII art
  • Section dividers: // ---- (hyphens only)
  • New files: // SPDX-License-Identifier: MIT at top

Includes

  • Standard headers first (<stdio.h>, <stdlib.h>)
  • Internal headers grouped by module
  • No blank lines between same-group includes
  • Use quotes for internal headers, angle brackets for system

Error handling

  • Return codes for recoverable errors
  • zpanic_at for unrecoverable (parser errors, user mistakes)
  • Check all allocation results (xmalloc never fails, but check anyway)