Problemas com #include em C

Dextro

Membro
Ok isto é basicamente um pedido de ajuda porque estou aqui a arrancar cabelos. Eu estou a tentar criar um programa em C e estou para aqui ás voltas a tentar acertar com a porcaria dos #include e simplesmente continua a dar problemas a torto e a direito.

Em baixo podem encontrar o ficheiro zip com o código fonte para olharem para isto se souberem alguma coisa de C e me conseguirem dizer como consigo arranjar isto, é que já me estou a passar...

Código Fonte

Agradeço imenso a quem me conseguir ajudar nisto, é que pura e simplesmente não consigo dar-lhe a volta.

By the way o código está sob a licença GPL portanto se acharem que o que eu andei para ali a meter pode ser útil façam favor de o utilizar.

PS: Não, isto não é nenhum trabalho da universidade caso alguém esteja preocupado com a "Honestidade Académica". :lol:

Já o tinha escrito no meu blog e aproveito e coloco-o aqui também. Any help? :(
 
Eu estou a usar um makefile, só não o inclui no zip por esquecimento (o Ajunta é uma IDE bem porreira :P).

Os meus erros são variados dependendo do sitio onde incluo o sqlite3.h. Ora me diz que está á espera de um ( antes do * no menu.c. Ora me diz que o opendb() e closedb() não estão defenidos... É a festa...

(os includes dão-me dores de cabeça -_-')

EDIT: aqui está o codigo com makefile

Pensei até que ao colocar todas as referencias ao sqlite3.h num unico ficheiro e ao inclui-lo quando necessário resolvesse os problemas mas não funcionou. Tentei criar um typedef para não ter de usar o tipo sqlite3 e não funcionou... Sou mesmo n00b mas pronto...
 
Última edição:
O teu problema é k estas a usar tipos nao definidos.
Por exemplo no ficheiro menu.h, a função menu retorna um _Bool e recebe uma cena do tipo sqlite3, o que acontece é que os tipos nao estao definidos.
Tens que definir os tipos e inclui-los onde os usas.
 
alem disso qdo fazes
Código:
#include "data.h"
siginifica que o ficheiro esta na directoria corrente.
se o que tu pretendes é incluir o ficheiro data.h da directoria include, tens que fazer:

Código:
#include "include/data.h"

Espero que tenha ajudado!
 
O teu problema é k estas a usar tipos nao definidos.
Por exemplo no ficheiro menu.h, a função menu retorna um _Bool e recebe uma cena do tipo sqlite3, o que acontece é que os tipos nao estao definidos.
Tens que definir os tipos e inclui-los onde os usas.

Dá-me um exemplo de um tipo não defenido.

o tipo sqlite3 é definido no ficheiro sqlite3.h (que não é meu mas sim uma biblioteca do sqlite) e o _Bool foi-me ensinado na universidade como sendo um tipo base do C (ANSI). Sou n00b mas não tanto.

Isso dos includes passou-me ao lado quando fiz as alterações no ajunta... deixa verificar.
 
Última edição:
OK andei a mexer e reduzi o numero de erros mas como eu já ando aqui a tentar combinações sem saber bem o que ando a fazer com os includes não é propriamente bom sinal.

Anyway aqui fica o codigo modificado e os erros que ainda dá:
Código Fonte

data.o: In funtion 'closedb':
/home/dextro/Projects/cardconsole/src/data.c:40: undefined reference to 'sqlite3_close'
data.o: In funtion 'opendb':
/home/dextro/Projects/cardconsole/src/data.c:34: undefined reference to 'sqlite3_open'

Apesar do ficheiro sqlite3.h estar lá incluído...
 
verifica a documentação da tua versao do sqlite e ver se as funções que tas a usar tem a mesma assinatura.

Descobri o problema e foi mesmo azelhice minha. Bastou-me adicionar -lsqlite3 ás flags do linker e passou a funcionar. Foi mesmo o facto de eu ser um n00b a usar makefiles.

Ao menos isto fica aqui para registo, eu pelo menos sei que me fartei de procurar por um problema igual e não encontrei nada :(

PS: anyway obrigado por me avisares daquela historia dos includes que me tinha passado ao lado e eu tinha falta de alguns 3 em sqlites ;)
 
Back
Topo