Array Type Has Incomplete Element Type Error C
Contents |
here for a quick overview of the site Help Center Detailed answers to any questions you might have Meta Discuss the workings and policies of this site About Us Learn more about Stack array has incomplete element type 'char ' Overflow the company Business Learn more about hiring developers or posting ads with us
Error Array Type Has Incomplete Element Type Struct
Stack Overflow Questions Jobs Documentation Tags Users Badges Ask Question x Dismiss Join the Stack Overflow Community Stack Overflow is a community array type has incomplete element type extern struct of 4.7 million programmers, just like you, helping each other. Join them; it only takes a minute: Sign up GCC: array type has incomplete element type up vote 13 down vote favorite 3 I have array type has incomplete element type char declared a struct, and I try to pass an array of those structs (as well as a double array of doubles, and an integer) into a function. I get an "array type has incomplete element type" message from gcc when I compile it. What have I got wrong in how I pass the struct into the function? typedef struct graph_node { int X; int Y; int active; } g_node; void print_graph(g_node
Type Of Formal Parameter 1 Is Incomplete C
graph_node[], double weight[][], int nodes); I have also tried struct g_node graph_node[], but I get the same thing. c arrays gcc struct share|improve this question asked Apr 4 '12 at 0:15 Josh 93021632 Are you absolutely positive the struct declaration comes before the function prototype? –Platinum Azure Apr 4 '12 at 0:26 add a comment| 2 Answers 2 active oldest votes up vote 16 down vote accepted It's the array that's causing trouble in: void print_graph(g_node graph_node[], double weight[][], int nodes); The second and subsequent dimensions must be given: void print_graph(g_node graph_node[], double weight[][32], int nodes); Or you can just give a pointer to pointer: void print_graph(g_node graph_node[], double **weight, int nodes); However, although they look similar, those are very different internally. If you're using C99, you can use variably-qualified arrays. Quoting an example from the C99 standard (section ยง6.7.5.2 Array Declarators): void fvla(int m, int C[m][m]); // valid: VLA with prototype scope void fvla(int m, int C[m][m]) // valid: adjusted to auto pointer to VLA { typedef int VLA[m][m]; // valid: block scope typedef VLA struct tag { int (*y)[n]; // invalid: y not ordinary identifier int z[n]; // invalid: z not ordinary identifier }; int D[m]; // valid: auto VLA static int E[m]; // invalid: static block sc
here for a quick overview of the site Help Center Detailed answers to any questions you might have Meta Discuss the workings and policies of this site About Us Learn more about Stack Overflow the array has incomplete element type 'char ' c++ company Business Learn more about hiring developers or posting ads with us Stack Overflow incomplete array Questions Jobs Documentation Tags Users Badges Ask Question x Dismiss Join the Stack Overflow Community Stack Overflow is a community of 4.7
Array Has Incomplete Element Type 'int []' C++
million programmers, just like you, helping each other. Join them; it only takes a minute: Sign up C error: array type has incomplete element type up vote 3 down vote favorite 1 I'm trying to compile a http://stackoverflow.com/questions/10003270/gcc-array-type-has-incomplete-element-type program in Ubuntu 11.04 that works well in Windows but it gives the above error. I have added a comment to the line that is causing the error. Here's the code: route_input() { int num_routes;//Variable to act as the loop counter for the loop getting route details int x; char route_id[3]; char r_source[20]; char r_destination[20]; int r_buses; printf("Please enter the number of routes used: \n"); scanf("%d", &num_routes); char routes_arr[num_routes][10];//An array to hold the http://stackoverflow.com/questions/10395054/c-error-array-type-has-incomplete-element-type details of each route printf("\nNumber of routes is %d\n", num_routes); struct route r[num_routes];//An array of structures of type route (This line causes the error) fflush(stdin); for (x = num_routes; x > 0; x--) { printf("\nEnter the route number: "); scanf("%s", r[x].route_num); printf("Route number is %s", r[x].route_num); printf("\nEnter the route source: "); fflush(stdin); scanf("%s", r[x].source); printf("Source = %s", r[x].source); printf("\nEnter the route destination: "); fflush(stdin); gets(r[x].destination); printf("Destination = %s", r[x].destination); printf("\nEnter the number of buses that use this route: "); scanf("%d", &r[x].num_of_buses); printf("Number of buses = %d", r[x].num_of_buses); } for (x = num_routes; x > 0; x--) { printf("\n\n+++Routes' Details+++\nRoute number = %s, Source = %s, Destination = %s, Number of buses for this route = %d\n", r[x].route_num, r[x].source, r[x].destination, r[x].num_of_buses); } } c gcc ubuntu struct share|improve this question edited May 1 '12 at 7:56 Nick 13k52967 asked May 1 '12 at 7:55 diamondtrust66 60110 8 Do not fflush(stdin), it is undefined behavior. –ouah May 1 '12 at 7:57 possible duplicate of stackoverflow.com/questions/2274550/… –deebee May 1 '12 at 7:57 4 What is struct route, where is it defined? –Mat May 1 '12 at 7:59 As @deebee pointed out, if your struct route is a recursive data structure with non-pointer self-referential members, you are likely to hit the incomplete type issue. –dirkgently
kizeren Member Registered: 2006-10-20 Posts: 5 array type has incomplete element type [solved] Well, not quite sure where to ask this question. I have tried some MUD sites. All give two options for fixing the problem with this error. Neither which seem to https://bbs.archlinux.org/viewtopic.php?id=26210 work.First one is, extern const struct flag_type *act_flags; struct flag_type { ... };Second is,struct flag_type http://cboard.cprogramming.com/c-programming/130484-error-array-type-has-incomplete-element-type.html { ... }; extern const struct flag_type act_flags[];I have tried both these and still does not comiple.Now after searching for couple of hours on posts and the web, I found that this is the proper way for array declarations?extern const struct flag_type *mprog_flags;So now I have the correct syntax above and for the actual array I have:const struct flag_type mprog_flags[] has incomplete = { { "act", TRIG_ACT, TRUE }, { "bribe", TRIG_BRIBE, TRUE }, { "death", TRIG_DEATH, TRUE }, { "entry", TRIG_ENTRY, TRUE }, { "fight", TRIG_FIGHT, TRUE }, { "give", TRIG_GIVE, TRUE }, { "greet", TRIG_GREET, TRUE }, { "grall", TRIG_GRALL, TRUE }, { "kill", TRIG_KILL, TRUE }, { "hpcnt", TRIG_HPCNT, TRUE }, { "random", TRIG_RANDOM, TRUE }, { "speech", TRIG_SPEECH, TRUE }, { "exit", TRIG_EXIT, TRUE }, { "exall", TRIG_EXALL, TRUE }, { "delay", TRIG_DELAY, has incomplete element TRUE }, { "surr", TRIG_SURR, TRUE }, { NULL, 0, TRUE } };Since I have been told this is still the proper way to do the array itself.But again when I compile I get more errors like below.tables.c:493: error: conflicting types for 'mprog_flags' tables.h:96: error: previous declaration of 'mprog_flags' was here tables.c:542: error: conflicting types for 'exit_flags' tables.h:95: error: previous declaration of 'exit_flags' was here tables.c:569: error: conflicting types for 'room_flags' tables.h:93: error: previous declaration of 'room_flags' was hereNow is my problem that I have the array declaration in seperate file as the actual array? Or am I just completly missing it?I am using GCC Version 4.1.1.Thanks in advance for anyone who may know the answer and who take the time to read this post.I will be more then happy to share the code if anyone would be interested in helping me. Offline #2 2006-10-20 05:13:13 tardo Member Registered: 2006-07-15 Posts: 526 Re: array type has incomplete element type [solved] extern const struct flag_type *mprog_flags; I think that the only time you'd use extern is when accessing a function/variable in another file.const struct flag_type mprog_flags[] = { { "act", TRIG_ACT, TRUE }, { "bribe", TRIG_BRIBE, TRUE }, { "death", TRIG_DEATH, TRUE }, .... }I believe this only works if you have a multi-dimensional array, in which case you don't.I think what you're tryi
Programming Boards C Programming error: array type has incomplete element type Getting started with C or C++ | C Tutorial | C++ Tutorial | C and C++ FAQ | Get a compiler | Fixes for common problems Thread: error: array type has incomplete element type Thread Tools Show Printable Version Email this Page… Subscribe to this Thread… Display Linear Mode Switch to Hybrid Mode Switch to Threaded Mode 10-01-2010 #1 gerger View Profile View Forum Posts Registered User Join Date Oct 2010 Posts 8 error: array type has incomplete element type Hi, I'm getting this error when I tried to compile the program in Linux platform. 'error: array type has incomplete element type' It works fine in AIX and was able to successfully compile, but not in Linux. Here's a part of the code: #ifdef MAIN_PROG struct COMPETITOR competitor[MAX_SIZE]; struct COMPETITOR competitor_sav[MAX_SIZE]; . . . #else . . extern struct COMPETITOR competitor[]; extern struct COMPETITOR competitor_sav[]; #endif Any input on this? Thanks. 10-01-2010 #2 cas View Profile View Forum Posts Registered User Join Date Sep 2007 Posts 1,010 Is struct COMPETITOR defined when MAIN_PROG is not? The error message is telling you that gcc doesn't know anything about a struct COMPETITOR, so it can't figure out how it would create (or index) an array of them. I can't tell you why an AIX compiler wouldn't have the same problem; but the source of the gcc error is lack of a struct definition. 10-02-2010 #3 gerger View Profile View Forum Posts Registered User Join Date Oct 2010 Posts 8 error: array type has incomplete element type Thanks cas for your response. What do you mean by the source of the gcc error is lack of a struct defition? If it lack of a struct definition, how it can be defined then based on the provided code? Please advise. Thanks again. 10-02-2010 #4 Adak View Profile View Forum Posts Registered User Join Date Sep 2006 Posts 8,868 Looks like you're trying to create an array of structs in Linux, without specifying the size of the array. Add a #define for MAX_SIZE, or provide some other suitable size for it. Empty squared brackets just won't work. 10-02-2010 #5 gerger View Profile View Forum Posts Registered User Join Date Oct 2010 Posts 8 error: array type has incomplete element type Thanks Adak for your response. Yes the MAX_SIZE has been defined in the code. #define MAX_SIZE 1000. The program has been successfully compiled in AIX, and it's working fine. However, when I tried to compile in Linux, I'm getting this error.