Search code examples
cstructadt

Error: storage size of 'c' isn't known


I'm getting "Error: storage size of 'c' isn't known" when i try to create the variable "c" of my struct called "struct car"

Here is the code:

teste.h

#ifndef TESTE_H_INCLUDED
#define TESTE_H_INCLUDED

typedef struct car Car;

#endif // TESTE_H_INCLUDED 

teste.c

#include <stdio.h>
#include <stdlib.h>
#include "teste.h"

struct car{
    char name[20];
    char model[20];

}; 

main.c

#include <stdio.h>
#include <stdlib.h>
#include "teste.h"
int main()
{
    Car c;
    return 0;
} 

I can't figure out why I'm getting this error... I bet it is something stupid... could someone help me?


Solution

  • the Car structure on the header file is just a forward declaration, when it's included on main.c, it only has knowledge of the forward declaration but no clue of how it's defined (or in this case, what the size of the struct is). define your struct on the header file.

    struct car {
        char name[20];
        char model[20];
    };