C: variable has initializer but incomplete type
Solution 1
Get rid of struct before item, you've typedef'd it.
Solution 2
typedef struct { ... } item creates an unnamed struct type, then typedefs it to the name item. So there is no struct item - just item and an unnamed struct type.
Either use struct item { ... }, or change all your struct item item1 = { ... }s to item item1 = { ... }. Which one you do depends on your preference.
Solution 3
The problem is that
typedef struct { /* ... */ } item;
does not declare the type name struct item, only item. If you want to be able to use both names use
typedef struct item { /* ... */ } item;
Matt
Updated on July 05, 2022Comments
-
Matt 6 monthsTrying to get my head around the old C language. Currently on structs and getting this error:
"variable 'item1' has initializer but incomplete type"Here's my code:
typedef struct { int id; char name[20]; float rate; int quantity; } item; void structsTest(void); int main() { structsTest(); system("PAUSE"); return 0; } void structsTest(void) { struct item item1 = { 1, "Item 1", 345.99, 3 }; struct item item2 = { 2, "Item 2", 35.99, 12 }; struct item item3 = { 3, "Item 3", 5.99, 7 }; float total = (item1.quantity * item1.rate) + (item2.quantity * item2.rate) + (item3.quantity * item3.rate); printf("%f", total); }I guessed perhaps the struct defintion was in the wrong location so I moved it to the top of the file and recompiled, but I am still getting the same error. Where's my mistake?