{"id":13989,"date":"2022-10-06T03:46:10","date_gmt":"2022-10-05T22:16:10","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-breaking-up-large-c-program-in-header-files-and-c-files\/"},"modified":"2022-10-06T03:46:10","modified_gmt":"2022-10-05T22:16:10","slug":"solved-breaking-up-large-c-program-in-header-files-and-c-files","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-breaking-up-large-c-program-in-header-files-and-c-files\/","title":{"rendered":"[Solved] Breaking up large C program in Header files and C files"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-27242454\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"27242454\" data-parentid=\"27242341\" data-score=\"2\" 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 headers will contain the type definitions and function declarations for the relevant sections of code.  Note that if the user code (primarily <code>main.c<\/code>) only calls <code>mergesort()<\/code> and not <code>merge()<\/code>, then the <code>mergesort.h<\/code> header should only declare <code>mergesort()<\/code> and <code>merge()<\/code> should be a static function in <code>mergesort.c<\/code>, hidden from the rest of the code.  A header should only define what &#8216;clients&#8217; need to know; implementation details should be kept hidden.  Remember to ensure that the headers are self-contained (so if <code>mergesort.h<\/code> needs to know about <code>struct node<\/code>, it includes the header that declares <code>struct node<\/code>, for example).  Also ensure they are idempotent (so writing <code>#include \"header.h\"<\/code> twice won&#8217;t cause compilation errors).  This is done with header guards such as:<\/p>\n<pre><code>#ifndef HEADER_H_INCLUDED\n#define HEADER_H_INCLUDED\n\n\u2026body of header file\u2026\n\n#endif \/* HEADER_H_INCLUDED *\/\n<\/code><\/pre>\n<p>The source files will contain the implementations of the functions declared in the headers.  The source files will include the relevant headers.  Parts of the code that don&#8217;t need to know about a given structure type shouldn&#8217;t need to include the header that declares that structure type.<\/p>\n<p>The outline makefile can be simple:<\/p>\n<pre><code>FILES.c = main.c student.c mergesort.c aux.c\nFILES.o = ${FILES.c:.c=.o}\n\nall: students\n\nstudents: ${FILES.o}\n    ${CC} ${CFLAGS} -o $@ ${FILES.o} ${LDFLAGS} ${LDLIBS}\n\nstudents.o:  students.h\nmergesort.o: mergesort.h\naux.o:       aux.h\n<\/code><\/pre>\n<p>Since <code>make<\/code> knows how to build <code>xyz.o<\/code> from <code>xyz.c<\/code>, you don&#8217;t need to specify those dependencies.  You should declare the headers used by <code>main.c<\/code> (so you need a line such as <code>main.o: students.h mergesort.h aux.h<\/code>, but you&#8217;ve not indicated what&#8217;s correct).<\/p>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">2<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved Breaking up large C program in Header files and C files <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] Your headers will contain the type definitions and function declarations for the relevant sections of code. Note that if the user code (primarily main.c) only calls mergesort() and not merge(), then the mergesort.h header should only declare mergesort() and merge() should be a static function in mergesort.c, hidden from the rest of the code. &#8230; <a title=\"[Solved] Breaking up large C program in Header files and C files\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-breaking-up-large-c-program-in-header-files-and-c-files\/\" aria-label=\"More on [Solved] Breaking up large C program in Header files and C files\">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,950],"class_list":["post-13989","post","type-post","status-publish","format-standard","hentry","category-solved","tag-c","tag-makefile"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] Breaking up large C program in Header files and C files - 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-breaking-up-large-c-program-in-header-files-and-c-files\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] Breaking up large C program in Header files and C files - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] Your headers will contain the type definitions and function declarations for the relevant sections of code. Note that if the user code (primarily main.c) only calls mergesort() and not merge(), then the mergesort.h header should only declare mergesort() and merge() should be a static function in mergesort.c, hidden from the rest of the code. ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-breaking-up-large-c-program-in-header-files-and-c-files\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-10-05T22:16:10+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-breaking-up-large-c-program-in-header-files-and-c-files\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-breaking-up-large-c-program-in-header-files-and-c-files\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] Breaking up large C program in Header files and C files\",\"datePublished\":\"2022-10-05T22:16:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-breaking-up-large-c-program-in-header-files-and-c-files\/\"},\"wordCount\":223,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"c++\",\"makefile\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-breaking-up-large-c-program-in-header-files-and-c-files\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-breaking-up-large-c-program-in-header-files-and-c-files\/\",\"name\":\"[Solved] Breaking up large C program in Header files and C files - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-10-05T22:16:10+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-breaking-up-large-c-program-in-header-files-and-c-files\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-breaking-up-large-c-program-in-header-files-and-c-files\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-breaking-up-large-c-program-in-header-files-and-c-files\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] Breaking up large C program in Header files and C files\"}]},{\"@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] Breaking up large C program in Header files and C files - 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-breaking-up-large-c-program-in-header-files-and-c-files\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] Breaking up large C program in Header files and C files - JassWeb","og_description":"[ad_1] Your headers will contain the type definitions and function declarations for the relevant sections of code. Note that if the user code (primarily main.c) only calls mergesort() and not merge(), then the mergesort.h header should only declare mergesort() and merge() should be a static function in mergesort.c, hidden from the rest of the code. ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-breaking-up-large-c-program-in-header-files-and-c-files\/","og_site_name":"JassWeb","article_published_time":"2022-10-05T22:16:10+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-breaking-up-large-c-program-in-header-files-and-c-files\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-breaking-up-large-c-program-in-header-files-and-c-files\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] Breaking up large C program in Header files and C files","datePublished":"2022-10-05T22:16:10+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-breaking-up-large-c-program-in-header-files-and-c-files\/"},"wordCount":223,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["c++","makefile"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-breaking-up-large-c-program-in-header-files-and-c-files\/","url":"https:\/\/jassweb.com\/solved\/solved-breaking-up-large-c-program-in-header-files-and-c-files\/","name":"[Solved] Breaking up large C program in Header files and C files - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-10-05T22:16:10+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-breaking-up-large-c-program-in-header-files-and-c-files\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-breaking-up-large-c-program-in-header-files-and-c-files\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-breaking-up-large-c-program-in-header-files-and-c-files\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] Breaking up large C program in Header files and C files"}]},{"@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\/13989","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=13989"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/13989\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=13989"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=13989"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=13989"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}