Variable #define
maria_silva
Messages postés
17
Statut
Membre
-
Info -
Info -
Bonjour,
Je suis en train de comprendre l'usage de la variable #define; donc j'ai commencé par un exemple simple...j'ai un #define DEUX 2.
je veux que quand je lance mon programme, il affiche un "**" si c'est DEUX ou "***" si c'est TROIS
donc:
****************disque.c*****************
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#define DEUX 2
#define TROIS 3
int main(int argc, char *argv[])
printf("%d", argv[1]); ******IL LANCE LA POSITION EN MEMOIRE!!!!******
printf("%s",argv[1]); *****IL AFFICHE LA CHAINE "DEUX"**********
Comment je pourrai afficher en sortie la valeur de ma variable constant DEUX 2????
je veux une sortie comme celle ci:
>disque DEUX
**
>disque TROIS
***
Je présente mes excuses si mes questions sont bêtes. Je vous remercie pour votre aide!!!
Je ne comprends pas la nature de la variable #define, je ne sais pas comme je peux l'afficher
Je suis en train de comprendre l'usage de la variable #define; donc j'ai commencé par un exemple simple...j'ai un #define DEUX 2.
je veux que quand je lance mon programme, il affiche un "**" si c'est DEUX ou "***" si c'est TROIS
donc:
****************disque.c*****************
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#define DEUX 2
#define TROIS 3
int main(int argc, char *argv[])
printf("%d", argv[1]); ******IL LANCE LA POSITION EN MEMOIRE!!!!******
printf("%s",argv[1]); *****IL AFFICHE LA CHAINE "DEUX"**********
Comment je pourrai afficher en sortie la valeur de ma variable constant DEUX 2????
je veux une sortie comme celle ci:
>disque DEUX
**
>disque TROIS
***
Je présente mes excuses si mes questions sont bêtes. Je vous remercie pour votre aide!!!
Je ne comprends pas la nature de la variable #define, je ne sais pas comme je peux l'afficher
A voir également:
- Variable #define
- Variable d'environnement temp - Forum Word
- Vba range avec variable ✓ - Forum VB / VBA
- Variable objet ou variable de bloc with non définie ✓ - Forum VB / VBA
- Range avec une Variable ✓ - Forum VB / VBA
- Vérifiez la variable d'environnement TEMP. QUE FAIRE ????? ✓ - Forum Microsoft Office
3 réponses
Bonjour,
Pour info, #define ne permet pas la creation de variable.
Pour l'adresse mémoire, il vaut mieux mettre %p que %d.
pour le reste, je comprends pas ce que tu veux faire.
Google is your friend
Pour info, #define ne permet pas la creation de variable.
Pour l'adresse mémoire, il vaut mieux mettre %p que %d.
pour le reste, je comprends pas ce que tu veux faire.
Google is your friend
Salut. Il faut bien comprendre que les directives de #define sont des directives de précompilation (c'est à dire AVANT la compilation).
Ces directives sont stupides et donc à éviter au maximum. Ce que fait le préprocesseur : il lit ton code source, tombe sur l'instruction #define DEUX 2, et continue à lire le code source en sachant que dès qu'il rencontrera la chaine de caractère "DEUX" il la remplacera par "2". Voilà, ni plus ni moins. Une fois arriver à la fin du fichier il passe le résultat au compilateur.
Si tu veux voir le code généré par le précompilateur, utilise l'option -E de gcc.
L'exemple hyper classique du problème des macros, c'est la "macro" qui met au carré :
#define sqr(x) x*x
alors si dans le source tu tapes x=srq(2+3); tu auras comme résultat 11, car le préprocesseur écrira :
Ces directives sont stupides et donc à éviter au maximum. Ce que fait le préprocesseur : il lit ton code source, tombe sur l'instruction #define DEUX 2, et continue à lire le code source en sachant que dès qu'il rencontrera la chaine de caractère "DEUX" il la remplacera par "2". Voilà, ni plus ni moins. Une fois arriver à la fin du fichier il passe le résultat au compilateur.
Si tu veux voir le code généré par le précompilateur, utilise l'option -E de gcc.
L'exemple hyper classique du problème des macros, c'est la "macro" qui met au carré :
#define sqr(x) x*x
alors si dans le source tu tapes x=srq(2+3); tu auras comme résultat 11, car le préprocesseur écrira :
x = 2+3*2+3;qui étant donner les priorités des opérateurs donnera 11 et non 25 comme on s'y attendrait.
if (strcmp(argv[1], "DEUX") == 0)
{
printf("%d\n", DEUX);
}
else if (strcmp(argv[1], "TROIS") == 0)
{
printf("%d\n", TROIS);
}
En gros, voici la méthode. Faire un define ne signifie pas créer une variable globale, loin de là. Mais ça a été expliqué plus haut donc je ne vais pas te refaire le cours ;)
si tu veux définir une globale, tu la déclares en dehors d'une fonction, tout simplement.