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

  • SEARCH
  • Home
  • 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 3978298
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 20, 20262026-05-20T05:01:50+00:00 2026-05-20T05:01:50+00:00

Is it possible to make an array of declared but not defined types? This

  • 0

Is it possible to make an array of declared but not defined types? This is what I would like to do:

typedef struct _indiv indiv;
typedef indiv pop[];

and let somebody else decide what an individual’s members actually are by defining the struct _indiv in another .c or .h file (and then linking everything together).

(For the semantics, indiv is an individual and pop is a population of individuals.)

But the compiler complains:

error: array type has incomplete element type

I could replace the second typedef by

typedef indiv * pop;

And use pop like an array by accessing the elements like p[i] (with p of type pop), but if I do that the compiler will complain that

error: invalid use of undefined type ‘struct _indiv’
error: dereferencing pointer to incomplete type

I suppose since typedef struct _indiv indiv is only a declaration, the compiler does not know at compile time (before the linkage) how much space the struct requires and that it doesn’t like it, thus forbiding to do what I’m trying. But I would like to know why and if there is a possible way to acheive what I want.

Thanks

  • 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. Editorial Team
    Editorial Team
    2026-05-20T05:01:50+00:00Added an answer on May 20, 2026 at 5:01 am

    You are right that the compiler doesn’t know the size of incomplete types (in your example, struct _indiv is an incomplete type), which is why you cannot declare a variable of such a type. This includes creating an array of such types.

    However, this doesn’t really matter, because if you don’t have the complete definition of the type, then you can’t sensibly access its members anyway: if you write p[i].foo, how do you know if the type actually has a member called foo, and if it does, what type it is?

    If you want the struct type’s members to be defined in another .c file (this is known as an “opaque type”), then you must only ever create and handle pointers to the struct. Your other .c should contain all the code that actually accesses the struct itself. The file that has only the incomplete type would contain code like:

    indiv *i1, *i2;
    
    i1 = new_individual("foo"); /* Create an individual */
    i2 = new_individual("bar");
    
    print_individual(i1);
    

    …and the source file with the complete definition of the struct would contain the implementation of new_individual(), print_individual() and so on.

    Under this scheme, the easiest way to deal with a population is to make it an array of pointers to indiv structs.

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

Sidebar

Related Questions

First of all: This is not a question about how to make a program
Using ruby, is it possible to make an array of each letter in the
Is it possible to import the array type in Java? I know this will
I have an array of objects. Is it possible to make a new array
How do I make a control array for buttons in VB.NET? Like in Visual
How is it possible to make prototype methods in C#.Net? In JavaScript, I can
Is it possible to make a site with ASP.NET MVC Framework using .NET 2.0?
Is it possible to make it appear to a system that a key was
Is it possible to make such buttons ( http://img225.imageshack.us/img225/6452/buttonslw9.jpg ) using CSS? It should
Is it possible to make efficient queries that use the complete regular expression feature

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.