2013
DOI: 10.1145/2637365.2517215
|View full text |Cite
|
Sign up to set email alerts
|

Does the discipline of preprocessor annotations matter?

Abstract: The C preprocessor ( CPP ) is a simple and language-independent tool, widely used to implement variable software systems using conditional compilation (i.e., by including or excluding annotated code). Although CPP provides powerful means to express variability, it has been criticized for allowing arbitrary annotations that break the underlying structure of the source code. We distinguish between disciplined annotations, which align with th… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

0
13
0

Year Published

2015
2015
2020
2020

Publication Types

Select...
4
2

Relationship

3
3

Authors

Journals

citations
Cited by 11 publications
(13 citation statements)
references
References 25 publications
0
13
0
Order By: Relevance
“…We are able to avoid some grammatical changes through the source‐code discipline. () In C , only annotations in the following: (1) entire functions, (2) type definitions, (3) entire statements, or (4) elements inside type definitions are considered to be disciplined . Still, it is not possible to solve all problems this way.…”
Section: Featurecmentioning
confidence: 99%
See 1 more Smart Citation
“…We are able to avoid some grammatical changes through the source‐code discipline. () In C , only annotations in the following: (1) entire functions, (2) type definitions, (3) entire statements, or (4) elements inside type definitions are considered to be disciplined . Still, it is not possible to solve all problems this way.…”
Section: Featurecmentioning
confidence: 99%
“…() However, there is still ongoing discussion whether annotations make it more difficult to develop systems or not. () Several researchers suggest to restrict the power of conditional inclusion, leading to a more disciplined usage of preprocessors . In addition, to overcome the limitations regarding feature traceability and physical separation of concerns, composition‐based approaches were proposed.…”
Section: Introductionmentioning
confidence: 99%
“…Based on existing work that suggests that the presence of #ifdefs in source code complicates maintenance tasks and requires additional effort from developers when trying to understand variable code dependencies [21,24,36], we aim at investigating the influence that code configurability has on the occurrence of vulnerabilities.…”
Section: Background and Motivationmentioning
confidence: 99%
“…Preprocessor directives (#ifdef statements) are frequently used as a mechanism to support code variability and thereby permit the diversification of software products. However, it is known that the presence of #ifdefs in source code complicates maintenance tasks and requires additional effort from developers when trying to understand feature code dependencies [21,22,36].…”
Section: Introductionmentioning
confidence: 99%
“…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].…”
Section: Related Workmentioning
confidence: 99%