1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Por que quando incluo o meu cabeçalho .h, a implementação .c não é incluída também?

Discussion in 'Technology' started by Vinicius Costa, Oct 8, 2018.

  1. Eu tenho três arquivos, produtos.h, produtos.c e main.c. produtos.h está localizada na pasta "headers", produtos.c está localizada em "sources" e a main.c está na mesma pasta que "headers" e "sources", algo assim:

    pasta
    \_headers
    | \_produtos.h
    \_sources
    | \_produtos.c
    \_main.c


    main.c:

    #include <stdio.h>
    #include <stdlib.h>
    #include "headers/produtos.h"

    int main(int argc, char** argv){
    struct produto p;
    p.id = 123;

    printf("Id: %d\n", p.id);

    return 0;
    }


    produtos.h:

    #ifndef PRODUTOS_H
    #define PRODUTOS_H

    struct produto;

    #endif


    produtos.c:

    #include "../headers/produtos.h"

    struct produto {
    char nome[100];
    };


    Ao compilar, recebo a seguinte mensagem de erro:

    main.c: In function 'main':
    main.c:6:20: error: storage size of 'p' isn't known
    struct produto p;
    ^


    Ao que meus testes indicam, o compilador não consegue receber a implementação da struct produto, ou seja, ele não consegue receber produtos.c, apenas produtos.h, qual o meu erro?

    Login To add answer/comment
     

Share This Page