Página 1 de 1

Arquivos .h no MPLAB (Dependências, #include)

MensagemEnviado: 02 Abr 2009 10:25
por mazzer
Ola a todos,

Não estou conseguindo entender como o MPLAB "carrega" os arquivos .h na hora da compilação.
Estou com um projeto que tem uns 11 arquivos .C e 11 arquivos .H
E na hora de compilar, estou tendo o erro de multiple definitions. Eu imagino que o compilador tenta incluir duas vezes o mesmo arquivo.

Eu ja tentei colocar as diretivas nos arquivos .H:
Código: Selecionar todos
#ifndef xxxx
#define xxxx
....
#endif

Mas parece que o MPLAB ignora estes parâmetros e continuo tendo este erro.

Tenho certeza que não estou definindo as variáveis em partes diferentes do projeto.

No meu caso, todo arquivo .C tem seu arquivo .H e existem dependências entre eles (um precisa de dados que estão no outro).

Tentei de duas maneiras.
Maneira 1:
Cada arquivo .C chama seu respectivo arquivo .H
No main.h dou um include para todos os arquivos .H

Maneira 2:
Em todos os arquivos .H dou um include para o main.H
No main.h dou um include para todos os arquivos .H

Qual o procedimento correto para evitar esse problema?
Como vocês fazem?

Abraço!!!

MensagemEnviado: 02 Abr 2009 12:48
por _blackmore_
não seria ..

#define <12345678.h>;
#include <123145678.c>;

e se os arquivos .h e .c não estiverem no mesmo diretório do projeto deve-se indicar também o caminho (C:\xxx\xxx) para tal funcionar certo?
Já tentou isso? agora uma coisa que me foi dito em um curso de ASM ... o caminho onde tu está compilando o projeto não pode ter mais do que 64 dígitos contando espaços porque o MPLab "se perde" e não faz o serviço dele.
Espero que ajude.

abrax!

MensagemEnviado: 02 Abr 2009 14:01
por mazzer
Olá _blackmore_,

Então, os arquivos estão todos no mesmo diretório sim, e adicionados ao projeto.

O MPLAB encontra todos os arquivos, mas alguns deles ele carrega mais de uma vez, ai da erro de definições multiplas.

Obrigado!!

Resolvido

MensagemEnviado: 02 Abr 2009 14:12
por mazzer
Bom.. aparentemente está resolvido...

O que eu fiz foi declarar todas as variáveis globais dentro de cada .H da seguinte forma:
Código: Selecionar todos
extern char var1;


E dentro do .C declaro ela novamente, mas sem o extern.

Até agora ta dando certo...

Abraço!

MensagemEnviado: 02 Abr 2009 14:16
por Sergio38br
Olha não seria mais facil declarar no arquivo C principal estas variaveis e nos diversos C, apenas indicar como EXTERN???

[ ]'s
Sergio