{"id":"https://openalex.org/W2133675710","doi":"https://doi.org/10.1109/tse.2002.1158288","title":"An empirical analysis of c preprocessor use","display_name":"An empirical analysis of c preprocessor use","publication_year":2002,"publication_date":"2002-12-01","ids":{"openalex":"https://openalex.org/W2133675710","doi":"https://doi.org/10.1109/tse.2002.1158288","mag":"2133675710"},"language":"en","primary_location":{"id":"doi:10.1109/tse.2002.1158288","is_oa":false,"landing_page_url":"https://doi.org/10.1109/tse.2002.1158288","pdf_url":null,"source":{"id":"https://openalex.org/S8351582","display_name":"IEEE Transactions on Software Engineering","issn_l":"0098-5589","issn":["0098-5589","1939-3520","2326-3881"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310320439","host_organization_name":"IEEE Computer Society","host_organization_lineage":["https://openalex.org/P4310320439","https://openalex.org/P4310319808"],"host_organization_lineage_names":["IEEE Computer Society","Institute of Electrical and Electronics Engineers"],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"IEEE Transactions on Software Engineering","raw_type":"journal-article"},"type":"article","indexed_in":["crossref"],"open_access":{"is_oa":false,"oa_status":"closed","oa_url":null,"any_repository_has_fulltext":false},"authorships":[{"author_position":"first","author":{"id":"https://openalex.org/A5032068969","display_name":"Michael D. Ernst","orcid":"https://orcid.org/0000-0001-9379-277X"},"institutions":[{"id":"https://openalex.org/I63966007","display_name":"Massachusetts Institute of Technology","ror":"https://ror.org/042nb2s44","country_code":"US","type":"education","lineage":["https://openalex.org/I63966007"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"M.D. Ernst","raw_affiliation_strings":["Department of Electrical Engineering and Computer Science and the Laboratory for Computer Science, Massachusetts Institute of Technology, Cambridge, MA, USA"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Department of Electrical Engineering and Computer Science and the Laboratory for Computer Science, Massachusetts Institute of Technology, Cambridge, MA, USA","institution_ids":["https://openalex.org/I63966007"]}]},{"author_position":"middle","author":{"id":"https://openalex.org/A5034577501","display_name":"Greg J. Badros","orcid":null},"institutions":[{"id":"https://openalex.org/I4210108985","display_name":"Bellevue Hospital Center","ror":"https://ror.org/01ky34z31","country_code":"US","type":"healthcare","lineage":["https://openalex.org/I1283621791","https://openalex.org/I4210086933","https://openalex.org/I4210108985"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"G.J. Badros","raw_affiliation_strings":["InfoSpace, Inc., Bellevue, WA, USA"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"InfoSpace, Inc., Bellevue, WA, USA","institution_ids":["https://openalex.org/I4210108985"]}]},{"author_position":"last","author":{"id":"https://openalex.org/A5011262764","display_name":"David Notkin","orcid":null},"institutions":[{"id":"https://openalex.org/I201448701","display_name":"University of Washington","ror":"https://ror.org/00cvxb145","country_code":"US","type":"education","lineage":["https://openalex.org/I201448701"]}],"countries":["US"],"is_corresponding":false,"raw_author_name":"D. Notkin","raw_affiliation_strings":["Department of Computer Science and Engineering, University of Washington, Seattle, WA, USA"],"raw_orcid":null,"affiliations":[{"raw_affiliation_string":"Department of Computer Science and Engineering, University of Washington, Seattle, WA, USA","institution_ids":["https://openalex.org/I201448701"]}]}],"institutions":[],"countries_distinct_count":1,"institutions_distinct_count":3,"corresponding_author_ids":[],"corresponding_institution_ids":[],"apc_list":null,"apc_paid":null,"fwci":15.2523,"has_fulltext":false,"cited_by_count":225,"citation_normalized_percentile":{"value":0.98810551,"is_in_top_1_percent":false,"is_in_top_10_percent":true},"cited_by_percentile_year":{"min":94,"max":100},"biblio":{"volume":"28","issue":"12","first_page":"1146","last_page":"1170"},"is_retracted":false,"is_paratext":false,"is_xpac":false,"primary_topic":{"id":"https://openalex.org/T10260","display_name":"Software Engineering Research","score":0.9998000264167786,"subfield":{"id":"https://openalex.org/subfields/1710","display_name":"Information Systems"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},"topics":[{"id":"https://openalex.org/T10260","display_name":"Software Engineering Research","score":0.9998000264167786,"subfield":{"id":"https://openalex.org/subfields/1710","display_name":"Information Systems"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10126","display_name":"Logic, programming, and type systems","score":0.9990000128746033,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}},{"id":"https://openalex.org/T10639","display_name":"Advanced Software Engineering Methodologies","score":0.9987999796867371,"subfield":{"id":"https://openalex.org/subfields/1702","display_name":"Artificial Intelligence"},"field":{"id":"https://openalex.org/fields/17","display_name":"Computer Science"},"domain":{"id":"https://openalex.org/domains/3","display_name":"Physical Sciences"}}],"keywords":[{"id":"https://openalex.org/keywords/computer-science","display_name":"Computer science","score":0.9008996486663818},{"id":"https://openalex.org/keywords/preprocessor","display_name":"Preprocessor","score":0.869977593421936},{"id":"https://openalex.org/keywords/macro","display_name":"Macro","score":0.715491533279419},{"id":"https://openalex.org/keywords/compiler","display_name":"Compiler","score":0.6671762466430664},{"id":"https://openalex.org/keywords/programming-language","display_name":"Programming language","score":0.6593477129936218},{"id":"https://openalex.org/keywords/programmer","display_name":"Programmer","score":0.6428062915802002},{"id":"https://openalex.org/keywords/semantics","display_name":"Semantics (computer science)","score":0.4799478352069855},{"id":"https://openalex.org/keywords/software-engineering","display_name":"Software engineering","score":0.40909236669540405}],"concepts":[{"id":"https://openalex.org/C41008148","wikidata":"https://www.wikidata.org/wiki/Q21198","display_name":"Computer science","level":0,"score":0.9008996486663818},{"id":"https://openalex.org/C34736171","wikidata":"https://www.wikidata.org/wiki/Q918333","display_name":"Preprocessor","level":2,"score":0.869977593421936},{"id":"https://openalex.org/C166955791","wikidata":"https://www.wikidata.org/wiki/Q629579","display_name":"Macro","level":2,"score":0.715491533279419},{"id":"https://openalex.org/C169590947","wikidata":"https://www.wikidata.org/wiki/Q47506","display_name":"Compiler","level":2,"score":0.6671762466430664},{"id":"https://openalex.org/C199360897","wikidata":"https://www.wikidata.org/wiki/Q9143","display_name":"Programming language","level":1,"score":0.6593477129936218},{"id":"https://openalex.org/C2778514511","wikidata":"https://www.wikidata.org/wiki/Q1374194","display_name":"Programmer","level":2,"score":0.6428062915802002},{"id":"https://openalex.org/C184337299","wikidata":"https://www.wikidata.org/wiki/Q1437428","display_name":"Semantics (computer science)","level":2,"score":0.4799478352069855},{"id":"https://openalex.org/C115903868","wikidata":"https://www.wikidata.org/wiki/Q80993","display_name":"Software engineering","level":1,"score":0.40909236669540405}],"mesh":[],"locations_count":7,"locations":[{"id":"doi:10.1109/tse.2002.1158288","is_oa":false,"landing_page_url":"https://doi.org/10.1109/tse.2002.1158288","pdf_url":null,"source":{"id":"https://openalex.org/S8351582","display_name":"IEEE Transactions on Software Engineering","issn_l":"0098-5589","issn":["0098-5589","1939-3520","2326-3881"],"is_oa":false,"is_in_doaj":false,"is_core":true,"host_organization":"https://openalex.org/P4310320439","host_organization_name":"IEEE Computer Society","host_organization_lineage":["https://openalex.org/P4310320439","https://openalex.org/P4310319808"],"host_organization_lineage_names":["IEEE Computer Society","Institute of Electrical and Electronics Engineers"],"type":"journal"},"license":null,"license_id":null,"version":"publishedVersion","is_accepted":true,"is_published":true,"raw_source_name":"IEEE Transactions on Software Engineering","raw_type":"journal-article"},{"id":"pmh:oai:CiteSeerX.psu:10.1.1.2.2815","is_oa":false,"landing_page_url":"http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.2.2815","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"http://pag.csail.mit.edu/pubs/c-preprocessor-tse2002.pdf","raw_type":"text"},{"id":"pmh:oai:CiteSeerX.psu:10.1.1.26.1019","is_oa":false,"landing_page_url":"http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.26.1019","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"http://sdg.lcs.mit.edu/~mernst//pubs/empirical-tr970406-revision.ps.gz","raw_type":"text"},{"id":"pmh:oai:CiteSeerX.psu:10.1.1.40.8241","is_oa":false,"landing_page_url":"http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.40.8241","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"http://www.cs.washington.edu/homes/gjb/papers/empirical-preprocessor-tosem.ps.gz","raw_type":"text"},{"id":"pmh:oai:CiteSeerX.psu:10.1.1.48.9614","is_oa":false,"landing_page_url":"http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.48.9614","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"ftp://ftp.cs.washington.edu/homes/mernst/empirical-uses.ps.gz","raw_type":"text"},{"id":"pmh:oai:CiteSeerX.psu:10.1.1.49.7948","is_oa":false,"landing_page_url":"http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.49.7948","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"http://www.cs.washington.edu/homes/mernst/pubs/empirical-tr970406.ps.gz","raw_type":"text"},{"id":"pmh:oai:CiteSeerX.psu:10.1.1.79.1775","is_oa":false,"landing_page_url":"http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.79.1775","pdf_url":null,"source":null,"license":null,"license_id":null,"version":"submittedVersion","is_accepted":false,"is_published":false,"raw_source_name":"http://www.cs.washington.edu/homes/gjb/papers/empirical-preprocessor-tosem.pdf","raw_type":"text"}],"best_oa_location":null,"sustainable_development_goals":[],"awards":[],"funders":[],"has_content":{"pdf":false,"grobid_xml":false},"content_urls":null,"referenced_works_count":45,"referenced_works":["https://openalex.org/W68605010","https://openalex.org/W111098712","https://openalex.org/W279118053","https://openalex.org/W1488796600","https://openalex.org/W1527793496","https://openalex.org/W1559977272","https://openalex.org/W1589047548","https://openalex.org/W1619278618","https://openalex.org/W1636826090","https://openalex.org/W1676506149","https://openalex.org/W1783388813","https://openalex.org/W2002301065","https://openalex.org/W2014277916","https://openalex.org/W2029786195","https://openalex.org/W2032049634","https://openalex.org/W2036134187","https://openalex.org/W2069942764","https://openalex.org/W2070869623","https://openalex.org/W2071751850","https://openalex.org/W2079656678","https://openalex.org/W2100591395","https://openalex.org/W2101115406","https://openalex.org/W2101225843","https://openalex.org/W2101880963","https://openalex.org/W2104416102","https://openalex.org/W2113547509","https://openalex.org/W2117174233","https://openalex.org/W2118598393","https://openalex.org/W2119452943","https://openalex.org/W2120789318","https://openalex.org/W2123789037","https://openalex.org/W2154215674","https://openalex.org/W2157457253","https://openalex.org/W2186202798","https://openalex.org/W2255462406","https://openalex.org/W2506994002","https://openalex.org/W2611598995","https://openalex.org/W2986106423","https://openalex.org/W3174107850","https://openalex.org/W4230079112","https://openalex.org/W4236986842","https://openalex.org/W4239606054","https://openalex.org/W4247133107","https://openalex.org/W6604521588","https://openalex.org/W6678051792"],"related_works":["https://openalex.org/W2192862863","https://openalex.org/W1497385637","https://openalex.org/W1992155208","https://openalex.org/W2369288331","https://openalex.org/W3137189469","https://openalex.org/W2040663641","https://openalex.org/W2044422526","https://openalex.org/W2519339279","https://openalex.org/W2467097043","https://openalex.org/W1482645738"],"abstract_inverted_index":{"This":[0],"is":[1,20,55,195],"the":[2,7,10,18,40,86,123,129,209,224,227,236],"first":[3],"empirical":[4],"study":[5],"of":[6,9,33,42,63,75,88,139,147,185,204,211,215,226,235,238,242,274,281],"use":[8,77,225],"C":[11,36,43,65,91,97,130,148,155,216,276],"macro":[12,47,49,173],"preprocessor,":[13,228],"Cpp.":[14],"To":[15],"determine":[16,39],"how":[17],"preprocessor":[19,44,76,102,247],"used":[21],"in":[22,46,61,182],"practice,":[23],"this":[24],"paper":[25],"analyzes":[26],"26":[27],"packages":[28],"comprising":[29],"1.4":[30],"million":[31],"lines":[32],"publicly":[34],"available":[35],"code.":[37],"We":[38,70],"incidence":[41],"usage-whether":[45],"definitions,":[48],"uses,":[50],"or":[51,59,66,92,272],"dependences":[52],"upon":[53],"macros-that":[54],"complex,":[56],"potentially":[57],"problematic,":[58],"inexpressible":[60],"terms":[62],"other":[64],"C++":[67,99,243],"language":[68,132,284],"features.":[69],"taxonomize":[71],"these":[72,264],"various":[73],"aspects":[74],"and":[78,133,135,150,164,213,259,266,289],"particularly":[79],"note":[80],"data":[81,258],"that":[82,190],"are":[83,231,280],"material":[84],"to":[85,98,100,153,171,219,269,283],"development":[87],"tools":[89,151,167,200],"for":[90],"C++,":[93],"including":[94],"translating":[95],"from":[96,223],"reduce":[101,245],"usage.":[103,206],"Our":[104,257],"results":[105,181,279],"show":[106],"that,":[107],"while":[108],"most":[109],"Cpp":[110,192,212],"usage":[111,251],"follows":[112],"fairly":[113],"simple":[114],"patterns,":[115],"an":[116,188,202],"effective":[117],"program":[118],"analysis":[119,189],"tool":[120,286],"must":[121],"address":[122],"preprocessor.":[124],"The":[125,278],"intimate":[126],"connection":[127],"between":[128,208],"programming":[131],"Cpp,":[134],"Cpp's":[136],"unstructured":[137],"transformations":[138],"token":[140],"streams":[141],"often":[142],"hinder":[143],"both":[144],"programmer":[145],"understanding":[146,203,271],"programs":[149],"built":[152],"engineer":[154],"programs,":[156],"such":[157,199,239,250],"as":[158],"compilers,":[159],"debuggers,":[160],"call":[161],"graph":[162],"extractors,":[163],"translators.":[165],"Most":[166],"make":[168],"no":[169,232],"attempt":[170],"analyze":[172],"usage,":[174,248],"but":[175,197,229,249],"simply":[176],"preprocess":[177],"their":[178],"input,":[179],"which":[180],"a":[183],"number":[184],"negative":[186],"consequences;":[187],"takes":[191],"into":[193],"account":[194],"preferable,":[196],"building":[198],"requires":[201],"actual":[205],"Differences":[207],"semantics":[210],"those":[214],"can":[217,244],"lead":[218],"subtle":[220],"bugs":[221],"stemming":[222],"there":[230],"previous":[233],"reports":[234],"prevalence":[237],"errors.":[240],"Use":[241],"some":[246],"has":[252],"not":[253],"been":[254],"previously":[255],"measured.":[256],"analyses":[260],"shed":[261],"light":[262],"on":[263],"issues":[265],"others":[267],"related":[268],"practical":[270],"manipulation":[273],"real":[275],"programs.":[277],"interest":[282],"designers,":[285],"writers,":[287],"programmers,":[288],"software":[290],"engineers.":[291]},"counts_by_year":[{"year":2026,"cited_by_count":1},{"year":2025,"cited_by_count":3},{"year":2024,"cited_by_count":7},{"year":2023,"cited_by_count":2},{"year":2022,"cited_by_count":3},{"year":2021,"cited_by_count":7},{"year":2020,"cited_by_count":9},{"year":2019,"cited_by_count":6},{"year":2018,"cited_by_count":11},{"year":2017,"cited_by_count":10},{"year":2016,"cited_by_count":18},{"year":2015,"cited_by_count":19},{"year":2014,"cited_by_count":11},{"year":2013,"cited_by_count":16},{"year":2012,"cited_by_count":16}],"updated_date":"2025-11-06T03:46:38.306776","created_date":"2025-10-10T00:00:00"}
