#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:
	
| 12
 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:
	
| 12
 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:
	
| 12
 3
 4
 
 |  
<...>
                  #define ARG_INTERFACE
<...> | 
 
	Code:
	
| 12
 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 ?