Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 45395
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 10, 20262026-05-10T15:48:09+00:00 2026-05-10T15:48:09+00:00

I have a couple of header files, which boil down to: tree.h: #include element.h

  • 0

I have a couple of header files, which boil down to:

tree.h:

#include 'element.h'  typedef struct tree_ {     struct *tree_ first_child;     struct *tree_ next_sibling;     int tag;     element *obj;     .... } tree; 

and element.h:

#include 'tree.h'  typedef struct element_ {     tree *tree_parent;     char *name;     ... } element; 

The problem is that they both reference each other, so tree needs element to be included, and element needs tree to be included.

This doesn’t work because to define the ‘tree’ structure, the element structure must be already known, but to define the element structure, the tree structure must be known.

How to resolve these types of loops (I think this may have something to do with ‘forward declaration’?)?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-10T15:48:10+00:00Added an answer on May 10, 2026 at 3:48 pm

    I think the problem here is not the missing include guard but the fact that the two structures need each other in their definition. So it’s a type define hann and egg problem.

    The way to solve these in C or C++ is to do forward declarations on the type. If you tell the compiler that element is a structure of some sort, the compiler is able to generate a pointer to it.

    E.g.

    Inside tree.h:

    // tell the compiler that element is a structure typedef: typedef struct element_ element;  typedef struct tree_ tree; struct tree_ {     tree *first_child;     tree *next_sibling;     int tag;      // now you can declare pointers to the structure.     element *obj; }; 

    That way you don’t have to include element.h inside tree.h anymore.

    You should also put include-guards around your header-files as well.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have page which consists of couple fragments and in the header fragment I
I have a couple of files containing a value in each line. EDIT :
I'll have couple of python functions I must interface with from the assembly code.
I have a couple of questions regarding VBScript and ASP Classic: What is the
We have a couple of mirrored SQL Server databases. My first problem - the
I have a couple old services that I want to completely uninstall. How can
We have a couple of developers asking for allow_url_fopen to be enabled on our
I have a couple of triggers on a table that I want to keep
I have a couple of solutions, but none of them work perfectly. Platform ASP.NET
We have a couple of applications running on Java 5 and would like now

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.