Flags - C++ - Programmation
Marsh Posté le 06-01-2005 à 18:29:54
Z3RgSp4wN a écrit : Comment ça marche les flags ? |
Ouala une question qu'elle est bonne!
Encore heureux que tu postes sous C++, ça donne une légère indication...
Tu parles de quoi? des flags de compil?
Marsh Posté le 06-01-2005 à 18:33:25
les truc machin tu c avec les bits et tout pour faire des combinaisons binaires a passer en param ds une fonction
voi tu de koi je parle ?
Marsh Posté le 06-01-2005 à 18:34:36
IWH
Marsh Posté le 06-01-2005 à 18:36:47
Ouep... c quoi exactement ta question alors?
Tu veux les utiliser? savoir comment les tester?
Marsh Posté le 06-01-2005 à 18:38:25
Mouai je c pa du tt ce ke sa signifie
Jespere que c pas une insulte... =(
Tu peux maider stp ou pas ? Chui pas débutant mais j'ai d pure lacune
Marsh Posté le 06-01-2005 à 18:42:03
flag c'est super vague...
ça regroupe un peu tout et n'importe quoi
Marsh Posté le 06-01-2005 à 18:46:31
Evite le style SMS s'il te plaît. Merci
Ensuite précise ta demande.
Marsh Posté le 06-01-2005 à 18:55:24
En faite c'est bon j'ai trouver de la doc !
Merci à tous !
Marsh Posté le 06-01-2005 à 19:06:20
tiens, ça me donne une idée, pour mon prochain pseudo, moi aussi je prendrais un symbole pas désembrouillé
Marsh Posté le 06-01-2005 à 19:09:15
avec un peu d'expérience, tu lui trouveras une autre saveur
Marsh Posté le 07-01-2005 à 10:25:09
Z3RgSp4wN a écrit : Ca repond pas à ma question ! |
Bon alors je tente une tite explication de ce que je pense être la reponse à ce que je crois être ta question
En gros un flag ça sert à passer des 'options' par masque, je m'explique...
si tu dit que tu as une fonction avec 3 options eventuellement activables en même temps, tu peu definir (en C) :
const int OPTION_1 = 0x01; // ..001 en binaire
const int OPTION_2 = 0x02; // ..010 en binaire
const int OPTION_3 = 0x04; // ..100 en binaire
sit tu as une fonction toto qui prend un masque en paramètre du style:
void toto(int flag)
Suivant le flag tu peu faire des traitement en testant binairement :
if (flag & OPTION_1) {
//Option 1 choisie
}
if (flag & OPTION_2) {
//Option 2 choisie
}
Tu peux donc passer en paramètre plusieurs choix :
//ton code
int flags = OPTION_1 & OPTION_2;
toto(flags);
ouala... j'espère que j'ai un peu repondu à ta question...voir compris ta question...
PS: bien sûr en pratique j'utiliserais un #define pour les constantes mais c'est plus clair pour l'explication
Marsh Posté le 07-01-2005 à 10:48:39
//ton code
int flags = OPTION_1 & OPTION_2;
intéressant ...
Marsh Posté le 07-01-2005 à 10:51:24
Taz a écrit : et re Vive les enum bordel |
Bo...faut rester généreux avec un code fait en buvant le café
C'est juste à titre indicatif, je suis même pas sûr du langage (C,C++,JAVA)...
Marsh Posté le 07-01-2005 à 10:51:53
ReplyMarsh Posté le 07-01-2005 à 11:01:03
Therier: il me semble que le 'intéressant' de Taz n'était pas là pour faire joli et signalait que tu voulais sûrement plutôt écrire :
int flags = OPTION_1 + OPTION_2;
(du moins je suppose et je suis tout paré à aller me recoucher si nécéssaire )
Edit: ou | d'ailleurs
Marsh Posté le 07-01-2005 à 11:03:27
perso j'utilise des macros
#define OPTION1 1
#define OPTION2 1<<1
#define OPTION3 1<<2
int flags=0;
//ajouter un flag
flags |= OPTION1;
//retirer un flag
flags &= ~OPTION2;
//tester un flag
if(flags & OPTION3)
{
...
Marsh Posté le 07-01-2005 à 11:11:24
spokup a écrit : perso j'utilise des macros |
bon déjà faut mettre des parenthèses :
#define OPTION2 (1<<2)
et puis les enum c'est plus adapté à mon avis
Marsh Posté le 07-01-2005 à 14:32:26
ReplyMarsh Posté le 07-01-2005 à 16:39:19
mouai et ça signifie koi ton ~ devant OPTION2 SomeBugsInMe ?
: heink :
Marsh Posté le 07-01-2005 à 17:32:34
Z3RgSp4wN a écrit : mouai et ça signifie koi ton ~ devant OPTION2 SomeBugsInMe ? |
en fait c'est spokup qui l'a mis
En tout cas, le ~ est l'opérateur NOT, qui inverse tous les bits.
Page explicative (en anglais) (merci Google):
http://www.cs.umd.edu/class/spring [...] twise.html
edit : lien en français:
http://homepage.mac.com/pierremous [...] .html#Bits
Marsh Posté le 07-01-2005 à 19:31:15
A bah non (je viens de verifier)
! inverse un bit
~ inverse tout les bits
Marsh Posté le 06-01-2005 à 18:03:55
Comment ça marche les flags ?
Merci