Por que o código não compila?
18/06/2019
0
Olá a todos.
Sou novo na programação e, embora esteja pegando bem os conceitos e a lógica, tem um problema que não estou encontrando solução.
Estou tentando criar minha primeira biblioteca (arquivo header), mas estou tendo um problema quanto a compilação dos arquivos. Estou usando 3 arquivos, um com a função main ( .c), outro com os protótipos das funções da biblioteca ( .h) e um último com o corpo das funções ( .c). Acontece que quando eu faço o arquivo .h com cabeçalho e corpo das funções, o código compila e executa normalmente. Quando eu tiro o corpo das funções do .h, deixando somente os protótipos, e passo o corpo pra outro aquivo .c, o código não compila e muito menos dá erro de sintaxe.
A seguir, o arquivo main.c
Essa é a biblioteca somente com o protótipo das funções (calculos.h):
E este último arquivo, é o corpo das funções (calculos.c):
Quando eu mando compilar o arquivo main, nada acontece, muito menos o executável é criado. Porém, quando eu apago o arquivo calculos.c, e deixo as funções do header completas, o código compila e executa.
Alguém tem ideia do que pode ser?
Sou novo na programação e, embora esteja pegando bem os conceitos e a lógica, tem um problema que não estou encontrando solução.
Estou tentando criar minha primeira biblioteca (arquivo header), mas estou tendo um problema quanto a compilação dos arquivos. Estou usando 3 arquivos, um com a função main ( .c), outro com os protótipos das funções da biblioteca ( .h) e um último com o corpo das funções ( .c). Acontece que quando eu faço o arquivo .h com cabeçalho e corpo das funções, o código compila e executa normalmente. Quando eu tiro o corpo das funções do .h, deixando somente os protótipos, e passo o corpo pra outro aquivo .c, o código não compila e muito menos dá erro de sintaxe.
A seguir, o arquivo main.c
#include <stdio.h> #include <stdlib.h> #include "calculos.h" int main(){ printf("Usando headers\\\\n"); int y = 5; int quad = quadrado(y); int cub = cubo(y); printf("Quadrado de %d: %d\\\\n", y, quad); printf("Cubo de %d: %d\\\\n", y, cub); return 0; }
Essa é a biblioteca somente com o protótipo das funções (calculos.h):
int quadrado(int x); int cubo(int x);
E este último arquivo, é o corpo das funções (calculos.c):
#include "calculos.h" int quadrado(int x){ return x*x; } int cubo(int x){ return x*x*x; }
Quando eu mando compilar o arquivo main, nada acontece, muito menos o executável é criado. Porém, quando eu apago o arquivo calculos.c, e deixo as funções do header completas, o código compila e executa.
Alguém tem ideia do que pode ser?
Giuseppe
Curtir tópico
+ 0
Responder
Posts
06/07/2019
João Júnior
Olá a todos.
Sou novo na programação e, embora esteja pegando bem os conceitos e a lógica, tem um problema que não estou encontrando solução.
Estou tentando criar minha primeira biblioteca (arquivo header), mas estou tendo um problema quanto a compilação dos arquivos. Estou usando 3 arquivos, um com a função main ( .c), outro com os protótipos das funções da biblioteca ( .h) e um último com o corpo das funções ( .c). Acontece que quando eu faço o arquivo .h com cabeçalho e corpo das funções, o código compila e executa normalmente. Quando eu tiro o corpo das funções do .h, deixando somente os protótipos, e passo o corpo pra outro aquivo .c, o código não compila e muito menos dá erro de sintaxe.
A seguir, o arquivo main.c
Essa é a biblioteca somente com o protótipo das funções (calculos.h):
E este último arquivo, é o corpo das funções (calculos.c):
Quando eu mando compilar o arquivo main, nada acontece, muito menos o executável é criado. Porém, quando eu apago o arquivo calculos.c, e deixo as funções do header completas, o código compila e executa.
Alguém tem ideia do que pode ser?
Sou novo na programação e, embora esteja pegando bem os conceitos e a lógica, tem um problema que não estou encontrando solução.
Estou tentando criar minha primeira biblioteca (arquivo header), mas estou tendo um problema quanto a compilação dos arquivos. Estou usando 3 arquivos, um com a função main ( .c), outro com os protótipos das funções da biblioteca ( .h) e um último com o corpo das funções ( .c). Acontece que quando eu faço o arquivo .h com cabeçalho e corpo das funções, o código compila e executa normalmente. Quando eu tiro o corpo das funções do .h, deixando somente os protótipos, e passo o corpo pra outro aquivo .c, o código não compila e muito menos dá erro de sintaxe.
A seguir, o arquivo main.c
#include <stdio.h> #include <stdlib.h> #include "calculos.h" int main(){ printf("Usando headers\\\\\\\\n"); int y = 5; int quad = quadrado(y); int cub = cubo(y); printf("Quadrado de %d: %d\\\\\\\\n", y, quad); printf("Cubo de %d: %d\\\\\\\\n", y, cub); return 0; }
Essa é a biblioteca somente com o protótipo das funções (calculos.h):
int quadrado(int x); int cubo(int x);
E este último arquivo, é o corpo das funções (calculos.c):
#include "calculos.h" int quadrado(int x){ return x*x; } int cubo(int x){ return x*x*x; }
Quando eu mando compilar o arquivo main, nada acontece, muito menos o executável é criado. Porém, quando eu apago o arquivo calculos.c, e deixo as funções do header completas, o código compila e executa.
Alguém tem ideia do que pode ser?
Está usando CodeBlocks? Tu tem que criar um Projeto, daí a IDE "linka" os arquivos. Supondo que tu esteja usando a IDE mencionada, faça:
1 - New File;
2 - Project;
3 - Empty Projetct
4 - Go;
5 - Next;
6 - Project Title (Informe o nome do seu Projeto;
7 - Escolha a Pasta de repositório
8 - Finish;
9 - New File (adicione os arquivos no projeto).
Copiei e colei a sua codificação e funcionou perfeitamente:
Main.c
#include<stdio.h> #include<stdlib.h> #include "Teste.h" int main(){ printf("Usando headers\\n"); int y = 5; int quad = quadrado(y); int cub = cubo(y); printf("Quadrado de %d: %d\\n", y, quad); printf("Cubo de %d: %d\\n", y, cub); system("pause"); return 0; }
Calculos.h
int quadrado(int x); int cubo(int x);
Calculos.c
#include<stdio.h> #include<stdlib.h> #include "Teste.h" int quadrado(int x){ return x*x; } int cubo(int x){ return x*x*x; }
Responder
Clique aqui para fazer login e interagir na Comunidade :)