“…Many researchers have stated that the use of cpp is likely to result in errorprone code that is difficult to understand and maintain [Spencer and Collyer, 1992;Favre, 1997;Lohmann et al, 2006;Schulze et al, 2013]. However, especially in the context of highly-configurable systems and software product lines, the preprocessor is still the standard tool [Jepsen and Beuche, 2009;Ganesan et al, 2009], and several researchers work on improved versions that avoid many of the pitfalls [Kästner et al, 2008b;Favre, 1997;Erwig and Walkingshaw, 2011;McCloskey and Brewer, 2005;Weise and Crew, 1993], on tools to migrate to alternative implementations [Adams et al, 2009;Kumar et al, 2012;Tomassetti and Ratiu, 2013;McCloskey and Brewer, 2005], and on tools to cope with existing cpp implementations [Vo and Chen, 1992;Krone and Snelting, 1994;Feigenspan et al, 2013;Kullbach and Riediger, 2001;Singh et al, 2007;Ribeiro et al, 2011].…”