{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T04:26:49Z","timestamp":1750220809203,"version":"3.41.0"},"publisher-location":"New York, NY, USA","reference-count":11,"publisher":"ACM","license":[{"start":{"date-parts":[[2019,7,3]],"date-time":"2019-07-03T00:00:00Z","timestamp":1562112000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":[],"published-print":{"date-parts":[[2019,7,3]]},"DOI":"10.1145\/3361149.3361151","type":"proceedings-article","created":{"date-parts":[[2019,12,5]],"date-time":"2019-12-05T14:07:37Z","timestamp":1575554857000},"page":"1-12","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":2,"title":["Patterns to escape the #ifdef hell"],"prefix":"10.1145","author":[{"given":"Christopher","family":"Preschern","sequence":"first","affiliation":[{"name":"B&amp;R Industrial Automation GmbH"}]}],"member":"320","published-online":{"date-parts":[[2019,7,3]]},"reference":[{"key":"e_1_3_2_1_1_1","unstructured":"Flemming Bunzel. 2013. Hardware-abstraction of an open source real-time Ethernet stack - Design realisation and evaluation.  Flemming Bunzel. 2013. Hardware-abstraction of an open source real-time Ethernet stack - Design realisation and evaluation."},{"key":"e_1_3_2_1_2_1","unstructured":"Brian Hook. 2005. Write Portable Code: An Introduction to Developing Software for Multiple Platforms. No Starch Press.  Brian Hook. 2005. Write Portable Code: An Introduction to Developing Software for Multiple Platforms. No Starch Press."},{"key":"e_1_3_2_1_3_1","unstructured":"Didier Malenfant. 2000. Writing Portable Code. In GDC.  Didier Malenfant. 2000. Writing Portable Code. In GDC."},{"key":"e_1_3_2_1_4_1","volume-title":"Clean Code: A Handbook of Agile Software Craftsmanship","author":"Martin Robert C.","year":"2008","unstructured":"Robert C. Martin . 2008 . Clean Code: A Handbook of Agile Software Craftsmanship . Prentice Hall PTR. Robert C. Martin. 2008. Clean Code: A Handbook of Agile Software Craftsmanship. Prentice Hall PTR."},{"key":"e_1_3_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/2855321.2855377"},{"key":"e_1_3_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/3011784.3011791"},{"key":"e_1_3_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.1145\/3147704.3147714"},{"key":"e_1_3_2_1_8_1","volume-title":"Proceedings of the 23rd European Conference on Pattern Languages of Programming (EuroPLoP).","author":"Preschern Christopher","year":"2018","unstructured":"Christopher Preschern . 2018 . C Patterns on Objects and their Lifetime . In Proceedings of the 23rd European Conference on Pattern Languages of Programming (EuroPLoP). Christopher Preschern. 2018. C Patterns on Objects and their Lifetime. In Proceedings of the 23rd European Conference on Pattern Languages of Programming (EuroPLoP)."},{"key":"e_1_3_2_1_9_1","volume-title":"Proceedings of the 23rd European Conference on Pattern Languages of Programming (EuroPLoP).","author":"Preschern Christopher","year":"2018","unstructured":"Christopher Preschern . 2018 . Patterns for Returning Data from C Functions . In Proceedings of the 23rd European Conference on Pattern Languages of Programming (EuroPLoP). Christopher Preschern. 2018. Patterns for Returning Data from C Functions. In Proceedings of the 23rd European Conference on Pattern Languages of Programming (EuroPLoP)."},{"key":"e_1_3_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/3361149.3361152"},{"key":"e_1_3_2_1_11_1","volume-title":"Proceedings of the 1992 USENIX Conference.","author":"Spencer Henry","year":"1992","unstructured":"Henry Spencer and Geoff Collyer . 1992 . #ifdef Considered Harmful, or Portability Experience With C News . In Proceedings of the 1992 USENIX Conference. Henry Spencer and Geoff Collyer. 1992. #ifdef Considered Harmful, or Portability Experience With C News. In Proceedings of the 1992 USENIX Conference."}],"event":{"name":"EuroPLoP '19: 24th European Conference on Pattern Languages of Programs","acronym":"EuroPLoP '19","location":"Irsee Germany"},"container-title":["Proceedings of the 24th European Conference on Pattern Languages of Programs"],"original-title":[],"link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3361149.3361151","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3361149.3361151","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T23:12:51Z","timestamp":1750201971000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3361149.3361151"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2019,7,3]]},"references-count":11,"alternative-id":["10.1145\/3361149.3361151","10.1145\/3361149"],"URL":"https:\/\/doi.org\/10.1145\/3361149.3361151","relation":{},"subject":[],"published":{"date-parts":[[2019,7,3]]},"assertion":[{"value":"2019-07-03","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}