Columbus Schema for C/C++ Preprocessing

Abstract

File inclusion, conditional compilation and macro processing has made the C/C++ preprocessor a powerful tool for programmers. However, program code with lots of directives often causes difficulties in program understanding and maintenance. The main source of the problem is the difference between the code that the programmer sees and the preprocessed code that the compiler gets. To aid program comprehension we designed a C/C++ preprocessor schema (supplementing the Columbus schema for C++) and implemented a preprocessor which produces both preprocessed files and schema instances. The instances of the schema may be used to model: (1) preprocessor constructs in the original source code, (2) the preprocessed compilation unit, and (3) the transformations made by the preprocessor.

Publication
Proceedings of the 8th European Conference on Software Maintenance and Reengineering (CSMR 2004), Tampere, Finland, Pages 75–84

BibTeX:

@InProceedings{VBF04,
    author    = {Vid\'acs, L\'aszl\'o and Besz\'edes, {\'A}rp\'ad and Ferenc, Rudolf},
    title     = {{C}olumbus Schema for {C/C++} Preprocessing},
    booktitle = {Proceedings of the 8th European Conference on Software Maintenance and Reengineering (CSMR 2004)},
    year      = {2004},
    pages     = {75--84},
    address   = {Tampere, Finland},
    month     = mar,
    publisher = {IEEE Computer Society},
    doi       = {10.1109/CSMR.2004.1281408},
    keywords  = {C, C++, preprocessor, program understanding, schema, tool interoperability, Columbus},
    url       = {http://ieeexplore.ieee.org/document/1281408/},
}