Fórum Por que o código não compila? #603066
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
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)