#define sur plusieurs fichiers
voilà je suis entrain de faire un programme en plusieurs fichiers...
dont un qui s'occupe de récuprer les arguments de ma comande.
arg.c
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
#include "arg.h"
extern char *interface;
void initvars(int argc, char **argv)
{
int arg;
extern char *optarg;
extern int optind, optopt;
while ((arg = getopt(argc, argv, ":i:f:")) != -1)
{
switch(arg)
{
case 'i':
#define ARG_INTERFACE
interface = optarg;
break;
default:
break;
}
}
} |
donc le principe c ke si il ya un argument apres "-i" alors je defini une contante interface.
que j'utilise dans mon main :
Code:
1 2 3 4 5 6 7 8 9
|
#include "main.h"
extern char *interface;
[...] #ifndef ARG_INTERFACE
#define ARG_INTERFACE
printf("ARG_INTERFACE pas defini");
//interface = pcap_lookupdev(errbuf);
#endif |
donc quand j'execute : ./prog -i eth1
tout va bien
mais si j'execute ./prog
il ne m'affiche même pas mon printf !
merci pour votre aide !!
:wink:
Re: #define sur plusieurs fichiers
Citation:
Envoyé par [thebadskull
]voilà je suis entrain de faire un programme en plusieurs fichiers...
dont un qui s'occupe de récuprer les arguments de ma comande.
arg.c
Code:
1 2 3 4
|
<...>
#define ARG_INTERFACE
<...> |
Code:
1 2 3 4 5 6
|
[...] #ifndef ARG_INTERFACE
#define ARG_INTERFACE
printf("ARG_INTERFACE pas defini");
//interface = pcap_lookupdev(errbuf);
#endif |
Petits rappels :
- Une macro opère une substitition de caractères dans les premières phases de la compilation.
- Lorsqu'une macro est définie, on peut la tester avec #ifdef ou ifndef ou # if defined ()
- Il est possible d'annuler une definition avec #undef
- La portée d'une macro commence avec sa définition et se termine par #undef ou la fin de l'unité de compilation courante.
- Il est bien sûr possible de placer une définition de macro dans un header (.h). Dans ce cas, la portée est étendue à tous les fichiers incluant cet header.
C'était quoi déjà la question ?