Columbus schema for C/C++ preprocessing

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.

[1]  Jürgen Ebert,et al.  GUPRO - Generic Understanding of Programs , 2002, Electron. Notes Theor. Comput. Sci..

[2]  Rudolf Ferenc,et al.  Data exchange with the columbus schema for c++ , 2002, Proceedings of the Sixth European Conference on Software Maintenance and Reengineering.

[3]  Marian Vittek Refactoring browser with preprocessor , 2003, Seventh European Conference onSoftware Maintenance and Reengineering, 2003. Proceedings..

[4]  Tibor Gyimóthy,et al.  Columbus - reverse engineering tool and schema for C++ , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[5]  Volker Riediger,et al.  Folding: an approach to enable program understanding of preprocessed languages , 2001, Proceedings Eighth Working Conference on Reverse Engineering.

[6]  Andy Schürr,et al.  GXL: toward a standard exchange format , 2000, Proceedings Seventh Working Conference on Reverse Engineering.

[7]  Michael D. Ernst,et al.  An Empirical Analysis of C Preprocessor Use , 2002, IEEE Trans. Software Eng..

[8]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[9]  Mario Latendresse Fast symbolic evaluation of C/C++ preprocessing using conditional values , 2003, Seventh European Conference onSoftware Maintenance and Reengineering, 2003. Proceedings..

[10]  Henry Spencer,et al.  #ifdef Considered Harmful, or Portability Experience with C News , 1992, USENIX Summer.

[11]  David Notkin,et al.  A framework for preprocessor-aware C source code analyses , 2000, Softw. Pract. Exp..

[12]  David Notkin,et al.  A framework for preprocessor-aware C source code analyses , 2000 .

[13]  Panos E. Livadas,et al.  Understanding code containing preprocessor constructs , 1994, Proceedings 1994 IEEE 3rd Workshop on Program Comprehension- WPC '94.

[14]  Gregor Snelting,et al.  On the inference of configuration structures from source code , 1994, Proceedings of 16th International Conference on Software Engineering.