6 dépôts
Tools that handle macro expansion and conditional compilation for C source code.
Distinct from C: Distinct from C: focuses on the preprocessing stage specifically rather than the language itself.
Explore 6 awesome GitHub repositories matching programming languages & runtimes · Preprocessors. Refine with filters or upvote what's useful.
This project is a comprehensive educational resource and programming course covering C++ language semantics and features from C++03 through C++26. It provides structured tutorials and technical guides focused on modern C++ development. The material offers specialized instruction on template metaprogramming, including the use of type traits and compile-time computations. It features detailed guides on concurrency and parallelism for multi-core execution, as well as a reference for software design applying SOLID principles and RAII. Additionally, it covers build performance optimization to redu
Provides best practices for managing macros through naming prefixes and scope restrictions to minimize side effects.
Chibicc is a C11 compiler designed as a reference implementation for studying compiler construction. It translates C source code into machine-specific assembly instructions by utilizing a pipeline that includes lexical analysis, recursive descent parsing, and single-pass code generation. The project serves as an educational tool for understanding the internal architecture of compilers, from initial tokenization to the final emission of machine code. The compiler distinguishes itself through its self-hosting capability, which allows the software to compile its own source code into a functional
Handles complex macro expansions and conditional compilation directives to prepare source code for translation.
A Small C Compiler
Handles C preprocessing directives with a compact, inline design that avoids external preprocessor dependencies.
Include What You Use est un optimiseur d'inclusions C++ et un analyseur de dépendances d'en-têtes. Il identifie les inclusions d'en-têtes inutilisées ou manquantes dans les fichiers sources pour réduire l'encombrement du projet et améliorer les performances de compilation. L'outil effectue une analyse statique en utilisant un arbre de syntaxe abstraite basé sur Clang pour mapper l'utilisation des symboles et suivre les effets du préprocesseur à travers différentes configurations de build. Il peut réécrire automatiquement les fichiers sources en insérant ou supprimant des directives de préprocesseur basées sur le graphe de dépendances calculé. Le système s'intègre aux bases de données de compilation pour déterminer les flags de compilation exacts utilisés pour chaque fichier source, permettant l'analyse et l'élagage des dépendances à travers un projet entier.
Tracks C-family preprocessor macros and conditional compilation to ensure accurate dependency analysis across build configurations.
pycparser is a C99 parser library that converts C source code into an abstract syntax tree consisting of Python objects. It functions as an abstract syntax tree generator, transforming preprocessed C code into a structured hierarchy for programmatic analysis and transformation. The library integrates with a C preprocessor to handle directives before parsing. It also features a stub header parser, which uses minimal mock headers to allow the parsing of C code without requiring a full system C library installation. The project provides tools for static code analysis, C program analysis, and so
Integrates with C preprocessors to handle macro expansion and conditional compilation before parsing.
This project provides a collection of minimal, modern configuration templates designed to demonstrate industry-standard practices for managing C and C++ build workflows. It serves as a practical guide for developers to implement build automation, dependency management, and project structuring using the CMake build system. The repository distinguishes itself by offering modular examples that cover complex build requirements, such as hierarchical project organization and the integration of external third-party source code. It emphasizes the use of target-based dependency graphs and interface-ba
Passes custom macros to the compiler during the generation phase to enable conditional compilation logic.