compilation avec plusieurs fichiers sources en C

Forum sur la programmation d'applications fonctionnant sur PC ou MAC. Pour vos autres questions de programmation : C pour microcontrôleur, VHDL, LCD etc, utilisez la rubrique Electronique numérique et logique programmable.

Modérateur : Modérateur

nico*
REGULIER
REGULIER
Messages : 109
Inscription : 23 avr. 2006 22:17

compilation avec plusieurs fichiers sources en C

Message par nico* »

Salut tt le monde,

je suis en train de faire un prog en C avec plusieurs fichiers sources : le main.c et d'autres qui contiennent des fonctions. Je programme sur PIC avec Mplab-C18.

je me pose 2 questions :
- quand je déclare une variable dans le main, comment faire pour qu'elle soit accessible depuis les autres fichiers ?
- quand dans le main je tape : "#define flash_enable_write PORTAbits.RA0", comment faire pour utiliser "flash_enable_write" dans les autres fichiers ?

j'ai quelques début de solutions :
- en analysant les fichiers de fonctions diverses de MCC18, j'ai vu des trucs comme "extern volatile near unsigned char CCP2CON;" ou "extern near unsigned FSR0;"
- faut il placer tous les "#define" dans un *.h, et faire un "#include "*.h"" dans chaque fichier *.c ?
nfk
PONCTUEL
PONCTUEL
Messages : 21
Inscription : 04 avr. 2006 15:17

Message par nfk »

Salut,
quand je déclare une variable dans le main, comment faire pour qu'elle soit accessible depuis les autres fichiers ?
Pour celà il faut passer ta variable en paramètre lorsque tu appel ta fonction.

main()
{
int ma_variable;
ma_fonction(ma_variable);
}

- quand dans le main je tape : "#define flash_enable_write PORTAbits.RA0", comment faire pour utiliser "flash_enable_write" dans les autres fichiers ?
Dans ce cas il faut mieu utiliser un fichier .h que tu va créer et tu place tout des #define dedans et ensuite dans chaque fichier .c tu appel ton .h (#include mon_point_h.h). Dans le fichier .h tu doita voir aussi le prototype de tes fonctions ( ma_focntion(int ma_variable, float ma variable2); )

- en analysant les fichiers de fonctions diverses de MCC18, j'ai vu des trucs comme "extern volatile near unsigned char CCP2CON;" ou "extern near unsigned FSR0;"
tu peu aussi utilisé une varible globale qui sera accéssible à ton main ainsi qu'à toute tes focntion qui utiliseron le fichier .h dans le quel tu l'aura créer ( extern int ma_variable_globale;)
cette solution est certe plus simple mais je te conseil la première en passant tes variable en paramètre qui plus "propre" ...

@+
Répondre