Partial preprocessing C code for variability analysis

  • Authors:
  • Christian Kästner;Paolo G. Giarrusso;Klaus Ostermann

  • Affiliations:
  • Philipps University Marburg, Marburg, Germany;Philipps University Marburg, Marburg, Germany;Philipps University Marburg, Marburg, Germany

  • Venue:
  • Proceedings of the 5th Workshop on Variability Modeling of Software-Intensive Systems
  • Year:
  • 2011

Quantified Score

Hi-index 0.00

Visualization

Abstract

The C preprocessor is commonly used to implement variability. Given a feature selection, code fragments can be excluded from compilation with #ifdef and similar directives. However, the token-based nature of the C preprocessor makes variability implementation difficult and error-prone. Additionally, variability mechanisms are intertwined with macro definitions, macro expansion, and file inclusion. To determine whether a code fragment is compiled, the entire file must be preprocessed. We present a partial preprocessor that preprocesses file inclusion and macro expansion, but retains variability information for further analysis. We describe the mechanisms of the partial preprocessor, provide a full implementation, and present some initial experimental results. The partial preprocessor is part of a larger endeavor in the TypeChef project to check variability implementations (syntactic correctness, type correctness) in C projects such as the Linux kernel.