{"id":34205,"date":"2023-03-02T21:43:06","date_gmt":"2023-03-02T16:13:06","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-file-containing-struct-closed\/"},"modified":"2023-03-02T21:43:06","modified_gmt":"2023-03-02T16:13:06","slug":"solved-how-to-create-a-file-containing-struct-closed","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-file-containing-struct-closed\/","title":{"rendered":"[Solved] How to create a file containing struct [closed]"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-34454955\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"34454955\" data-parentid=\"34454930\" data-score=\"1\" 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>Your problem &#8220;<em>I am guessing<\/em>&#8221; is the structure defintion<\/p>\n<pre><code>typedef struct test {\n    int a;\n};\n<\/code><\/pre>\n<p>This is not just a structure definition, but a type definition and it&#8217;s missing the type name, it can be fixed like this<\/p>\n<pre><code>typedef struct test {\n    int a;\n} MyTestStruct;\n<\/code><\/pre>\n<p>or simply remove the <code>typedef<\/code> and just use <code>struct test<\/code> to declare instances of it.<\/p>\n<p>Also, if you intend to access it&#8217;s members then you must provide a definition in the same compilation unit where you access it&#8217;s members, in this case in the &#8220;<em>main<\/em>&#8221; file as you called it.<\/p>\n<p>If you want to hide the members (<em>make it an opaque structure<\/em>), try like this<\/p>\n<p><strong>struct.h<\/strong><\/p>\n<pre><code>#ifndef __STRUCT_H__\n#define __STRUCT_H__\nstruct test; \/\/ Forward declaration\n\nstruct test *struct_test_new();\nint struct_test_get_a(const struct test *const test);\nvoid struct_test_set_a(struct test *test, int value);\nvoid struct_test_destroy(struct test *test);\n\n#endif \/* __STRUCT_H__ *\/\n<\/code><\/pre>\n<p>And you would then have<\/p>\n<p><strong>struct.c<\/strong><\/p>\n<pre><code>#include \"struct.h\"\n\n\/\/ Define the structure now\nstruct test {\n    int a;\n};\n\nstruct test *\nstruct_test_new()\n{\n    struct test *test;\n    test = malloc(sizeof(*test));\n    if (test == NULL)\n        return NULL;\n    test-&gt;a = DEFAULT_A_VALUE;\n    return test;\n}\n\nint \nstruct_test_get_a(const struct test *const test)\n{\n    return test-&gt;a;\n}\n\nvoid \nstruct_test_set_a(struct test *test, int value)\n{\n    test-&gt;a = value;\n}\n\nvoid \nstruct_test_destroy(struct test *test)\n{\n    if (test == NULL)\n        return; \n    \/\/ Free all freeable members of `test'\n    free(test);\n}\n<\/code><\/pre>\n<p>This technique is actually very elegant and has many advantages, the most important being that you can be sure that the structure is used correctly since no one can set the values directly and hence no one can set invalid\/incorrect values. And also, if some of it&#8217;s members are allocated dynamically using <code>malloc()<\/code> you can ensure that they are freed when the user calls <code>_destroy()<\/code> on the pointer. You can control the range of values that you consider are appropriate, and avoid buffer overflows in cases where it applies.<\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">4<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved How to create a file containing struct [closed] <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] Your problem &#8220;I am guessing&#8221; is the structure defintion typedef struct test { int a; }; This is not just a structure definition, but a type definition and it&#8217;s missing the type name, it can be fixed like this typedef struct test { int a; } MyTestStruct; or simply remove the typedef and just &#8230; <a title=\"[Solved] How to create a file containing struct [closed]\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-file-containing-struct-closed\/\" aria-label=\"More on [Solved] How to create a file containing struct [closed]\">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-34205","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] How to create a file containing struct [closed] - 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-how-to-create-a-file-containing-struct-closed\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] How to create a file containing struct [closed] - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] Your problem &#8220;I am guessing&#8221; is the structure defintion typedef struct test { int a; }; This is not just a structure definition, but a type definition and it&#8217;s missing the type name, it can be fixed like this typedef struct test { int a; } MyTestStruct; or simply remove the typedef and just ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-file-containing-struct-closed\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-02T16:13:06+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=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-file-containing-struct-closed\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-file-containing-struct-closed\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] How to create a file containing struct [closed]\",\"datePublished\":\"2023-03-02T16:13:06+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-file-containing-struct-closed\/\"},\"wordCount\":215,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"c++\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-file-containing-struct-closed\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-file-containing-struct-closed\/\",\"name\":\"[Solved] How to create a file containing struct [closed] - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2023-03-02T16:13:06+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-file-containing-struct-closed\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-file-containing-struct-closed\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-file-containing-struct-closed\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] How to create a file containing struct [closed]\"}]},{\"@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=1775193939\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775193939\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] How to create a file containing struct [closed] - 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-how-to-create-a-file-containing-struct-closed\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] How to create a file containing struct [closed] - JassWeb","og_description":"[ad_1] Your problem &#8220;I am guessing&#8221; is the structure defintion typedef struct test { int a; }; This is not just a structure definition, but a type definition and it&#8217;s missing the type name, it can be fixed like this typedef struct test { int a; } MyTestStruct; or simply remove the typedef and just ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-file-containing-struct-closed\/","og_site_name":"JassWeb","article_published_time":"2023-03-02T16:13:06+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-file-containing-struct-closed\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-file-containing-struct-closed\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] How to create a file containing struct [closed]","datePublished":"2023-03-02T16:13:06+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-file-containing-struct-closed\/"},"wordCount":215,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["c++"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-file-containing-struct-closed\/","url":"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-file-containing-struct-closed\/","name":"[Solved] How to create a file containing struct [closed] - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2023-03-02T16:13:06+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-file-containing-struct-closed\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-how-to-create-a-file-containing-struct-closed\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-how-to-create-a-file-containing-struct-closed\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] How to create a file containing struct [closed]"}]},{"@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=1775193939","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775193939","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\/34205","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=34205"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/34205\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=34205"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=34205"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=34205"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}