When conditional compilation depends on too many variables, it can make the code harder to reason about as the number of possible combinations of configuration increases exponentially.234 When conditional compilation is done via a preprocessor that does not guarantee syntactically correct output in the source language, such as the C preprocessor, this may lead to hard-to-debug compilation errors,567 which is sometimes called "#ifdef hell."89
"Conditional Compilation". Microsoft Corporation. Archived from the original on 2008-09-06. Retrieved 2011-11-27. https://web.archive.org/web/20080906144358/http://msdn2.microsoft.com/en-us/library/ahx1z4fs(VS.80).aspx ↩
Gazzillo, Paul; Wei, Shiyi (2019-05-27). "Conditional Compilation is Dead, Long Live Conditional Compilation!" (PDF). ICSE-NIER '19: Proceedings of the 41st International Conference on Software Engineering: New Ideas and Emerging Results. 2019 IEEE/ACM 41st International Conference on Software Engineering: New Ideas and Emerging Results (ICSE-NIER). Montreal, QC, Canada: IEEE Press. pp. 105–108. doi:10.1109/ICSE-NIER.2019.00035. ISBN 978-1-7281-1758-4. Archived (PDF) from the original on 2022-11-07. Retrieved 2023-01-21. 978-1-7281-1758-4 ↩
Meinicke, Jens; Thüm, Thomas; Schröter, Reimar; Benduhn, Fabian; Leich, Thomas; Saake, Gunter (2017). Meinicke, Jens; Thüm, Thomas; Schröter, Reimar; Benduhn, Fabian (eds.). Quality Assurance for Conditional Compilation. Cham: Springer International Publishing. pp. 131–139. doi:10.1007/978-3-319-61443-4_12. ISBN 978-3-319-61443-4. Retrieved 2023-01-21. {{cite book}}: |work= ignored (help) 978-3-319-61443-4 ↩
"compiler - How does conditional compilation impact product quality, security and code complexity?". Software Engineering Stack Exchange. Retrieved 2023-01-21. https://softwareengineering.stackexchange.com/questions/405980/how-does-conditional-compilation-impact-product-quality-security-and-code-compl ↩
Le, Duc; Walkingshaw, Eric; Erwig, Martin (2011-09-18). "#ifdef confirmed harmful: Promoting understandable software variation". 2011 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC). pp. 143–150. doi:10.1109/VLHCC.2011.6070391. ISBN 978-1-4577-1246-3. 978-1-4577-1246-3 ↩
"conditional compilation - Why should #ifdef be avoided in .c files?". Stack Overflow. Retrieved 2023-01-21. https://stackoverflow.com/questions/1851181/why-should-ifdef-be-avoided-in-c-files ↩
"c++ - Dos and Don'ts of Conditional Compile". Stack Overflow. Retrieved 2023-01-21. https://stackoverflow.com/questions/4469645/dos-and-donts-of-conditional-compile ↩
Preschern, Christopher (2019-07-03). Patterns to escape the #ifdef hell (PDF). Proceedings of the 24th European Conference on Pattern Languages of Programs. EuroPLop '19. New York, NY, USA: Association for Computing Machinery. pp. 1–12. doi:10.1145/3361149.3361151. ISBN 978-1-4503-6206-1. Archived (PDF) from the original on 2022-12-21. 978-1-4503-6206-1 ↩
"Living in the #ifdef Hell". www.cqse.eu. 28 October 2015. Archived from the original on 2022-11-28. Retrieved 2023-01-21. http://www.cqse.eu/en/news/blog/living-in-the-ifdef-hell/ ↩