{"id":27614,"date":"2022-12-25T11:34:33","date_gmt":"2022-12-25T06:04:33","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-why-preprocessor-doesnt-expand-type-defined-later-in-the-code\/"},"modified":"2022-12-25T11:34:33","modified_gmt":"2022-12-25T06:04:33","slug":"solved-why-preprocessor-doesnt-expand-type-defined-later-in-the-code","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-why-preprocessor-doesnt-expand-type-defined-later-in-the-code\/","title":{"rendered":"[Solved] Why preprocessor doesn&#8217;t expand type defined later in the code"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-37225995\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"37225995\" data-parentid=\"37225894\" data-score=\"3\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p>The preprocessor just performs a single pass through the file, expanding macros as it goes, and adding macros to its list when it encounters the <code>#define<\/code>. When it gets to the line<\/p>\n<pre><code>typedef BLA_Str blaInstance\n<\/code><\/pre>\n<p>it doesn&#8217;t yet know about the <code>BLA_Str<\/code> macro, so it leaves it unchanged in the output.<\/p>\n<p>You shold generally put all the <code>#define<\/code> lines at the beginning, so they&#8217;ll affect everything in the rest of the file.<\/p>\n<p>You can find a reasonable summary of how the C preprocessor works in <a rel=\"nofollow noopener\" target=\"_blank\" href=\"http:\/\/publications.gbdirect.co.uk\/c_book\/chapter7\/directives.html\">The C Book<\/a>. It explains:<\/p>\n<blockquote>\n<p>There are two ways of defining macros, one of which looks like a function and one which does not. Here is an example of each:<\/p>\n<pre><code>   #define FMAC(a,b) a here, then b\n   #define NONFMAC some text here\n<\/code><\/pre>\n<p>Both definitions define a macro and some replacement text, which will be used to replace <strong>later<\/strong> occurrences of the macro name in the rest of the program.<\/p>\n<\/blockquote>\n<p>If a macro expands into another macro, this is handled with <em>rescanning<\/em>:<\/p>\n<blockquote>\n<p>Once the processing described above has occurred, the replacement text plus the following tokens of the source file is rescanned, looking for more macro names to replace. The one exception is that, within a macro&#8217;s replacement text, the name of the macro itself is not expanded.<\/p>\n<\/blockquote><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">3<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved Why preprocessor doesn&#8217;t expand type defined later in the code <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] The preprocessor just performs a single pass through the file, expanding macros as it goes, and adding macros to its list when it encounters the #define. When it gets to the line typedef BLA_Str blaInstance it doesn&#8217;t yet know about the BLA_Str macro, so it leaves it unchanged in the output. You shold generally &#8230; <a title=\"[Solved] Why preprocessor doesn&#8217;t expand type defined later in the code\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-why-preprocessor-doesnt-expand-type-defined-later-in-the-code\/\" aria-label=\"More on [Solved] Why preprocessor doesn&#8217;t expand type defined later in the code\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[324],"class_list":["post-27614","post","type-post","status-publish","format-standard","hentry","category-solved","tag-c"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] Why preprocessor doesn&#039;t expand type defined later in the code - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-why-preprocessor-doesnt-expand-type-defined-later-in-the-code\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] Why preprocessor doesn&#039;t expand type defined later in the code - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] The preprocessor just performs a single pass through the file, expanding macros as it goes, and adding macros to its list when it encounters the #define. When it gets to the line typedef BLA_Str blaInstance it doesn&#8217;t yet know about the BLA_Str macro, so it leaves it unchanged in the output. You shold generally ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-why-preprocessor-doesnt-expand-type-defined-later-in-the-code\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-12-25T06:04:33+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-why-preprocessor-doesnt-expand-type-defined-later-in-the-code\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-why-preprocessor-doesnt-expand-type-defined-later-in-the-code\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] Why preprocessor doesn&#8217;t expand type defined later in the code\",\"datePublished\":\"2022-12-25T06:04:33+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-why-preprocessor-doesnt-expand-type-defined-later-in-the-code\/\"},\"wordCount\":223,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"c++\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-why-preprocessor-doesnt-expand-type-defined-later-in-the-code\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-why-preprocessor-doesnt-expand-type-defined-later-in-the-code\/\",\"name\":\"[Solved] Why preprocessor doesn't expand type defined later in the code - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-12-25T06:04:33+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-why-preprocessor-doesnt-expand-type-defined-later-in-the-code\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-why-preprocessor-doesnt-expand-type-defined-later-in-the-code\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-why-preprocessor-doesnt-expand-type-defined-later-in-the-code\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] Why preprocessor doesn&#8217;t expand type defined later in the code\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] Why preprocessor doesn't expand type defined later in the code - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-why-preprocessor-doesnt-expand-type-defined-later-in-the-code\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] Why preprocessor doesn't expand type defined later in the code - JassWeb","og_description":"[ad_1] The preprocessor just performs a single pass through the file, expanding macros as it goes, and adding macros to its list when it encounters the #define. When it gets to the line typedef BLA_Str blaInstance it doesn&#8217;t yet know about the BLA_Str macro, so it leaves it unchanged in the output. You shold generally ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-why-preprocessor-doesnt-expand-type-defined-later-in-the-code\/","og_site_name":"JassWeb","article_published_time":"2022-12-25T06:04:33+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-why-preprocessor-doesnt-expand-type-defined-later-in-the-code\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-why-preprocessor-doesnt-expand-type-defined-later-in-the-code\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] Why preprocessor doesn&#8217;t expand type defined later in the code","datePublished":"2022-12-25T06:04:33+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-why-preprocessor-doesnt-expand-type-defined-later-in-the-code\/"},"wordCount":223,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["c++"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-why-preprocessor-doesnt-expand-type-defined-later-in-the-code\/","url":"https:\/\/jassweb.com\/solved\/solved-why-preprocessor-doesnt-expand-type-defined-later-in-the-code\/","name":"[Solved] Why preprocessor doesn't expand type defined later in the code - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-12-25T06:04:33+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-why-preprocessor-doesnt-expand-type-defined-later-in-the-code\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-why-preprocessor-doesnt-expand-type-defined-later-in-the-code\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-why-preprocessor-doesnt-expand-type-defined-later-in-the-code\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] Why preprocessor doesn&#8217;t expand type defined later in the code"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1776403586","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/27614","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=27614"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/27614\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=27614"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=27614"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=27614"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}