OVH Cloud OVH Cloud

bool

64 réponses
Avatar
Fabien LE LEZ
Bonjour,

Un peu HS ici, mais je ne peux m'empêcher de vous faire profiter d'une
perle de l'API Windows :

typedef int BOOL;
#define FALSE 0
#define TRUE 1
C'est limite, mais prévu à l'origine pour les compilateurs sans type
bool.

BOOL GetMessage (/*je vous fais grâce des paramètres*/);

Pas de problème non plus... sauf cette remarque :

Note that the function return value can be TRUE, FALSE, or -1.

Les profs de C++ pourraient se servir de cet exemple pour illustrer
les magnifiques méthodes d'obfuscation utilisées dans l'industrie ;-)


--
;-)

10 réponses

1 2 3 4 5
Avatar
DINH Viêt Hoà



Les profs de C++ pourraient se servir de cet exemple pour illustrer
les magnifiques méthodes d'obfuscation utilisées dans l'industrie ;-)


ça veut dire quoi "obfuscation" ?


En français, l'orthographe est offuscation ou offusquement, du verbe
offusquer, qui veut dire « cacher à la vue, empêcher de voir », et plus
particulièrement au sens figuré et en parlant de faculté intellectuelle : «
priver de clarté, de perspicacité. ».


oulà ! j'ai beau trouver "offusquer" dans mon petit robert
(version électronique). Pas moyen de mettre la main sur offuscation ou
offusquement.

Enfin merci à tous pour ces précisions.

--
DINH V. Hoa,

etPan! - newsreader, mail user agent -- http://libetpan.sf.net/etpan



Avatar
Pierre Maurette
"DINH Viêt Hoà" a écrit .

Les profs de C++ pourraient se servir de cet exemple pour illustrer
les magnifiques méthodes d'obfuscation utilisées dans l'industrie ;-)


ça veut dire quoi "obfuscation" ?
Revue "Programmez !", dernier n° (59 de Décembre 2003), page 48 :

un article "Protégez votre code des regards indiscrets avec des
obfuscateurs".
Après lecture en diagonale : des outils qui rendent incompréhensible le code
décompilé (ou le code source ?) s'il est impossible d'empêcher cette
décompilation. Par exemple, en remplaçant les noms par des noms improbables.
C'est peut-être le début d'un truc nouveau : l'Open Source Dégueu, ou
Inbitable Open Source (IOS !)..
Pierre


Avatar
Pierre Maurette
"Gabriel Dos Reis" a écrit

Alors, logiquement le type ne doit plus s'appeler BOOL.
Le choix du nom BOOL ne semble effectivement pas très heureux, d'autant plus

que Microsoft ne se prive pas par ailleurs pour créer des noms de types bien
spécifiques.
Pour atténuer un peu la critique, les fonctions API sont du C utilisables en
C++, et donc le type bool n'existait pas :
"Avec Visual C++, vous pouvez programmer pour Windows en utilisant soit C,
soit C++ et l'API Win32, soit C++ et MFC, soit C++ et ATL. Visual C++ inclut
la documentation relative aux deux derniers cas." (extrait du MSDN).
Ceci dit, cette valeur de retour est assez pratique : une fois testée la
valeur 0 (WM_QUIT), il suffit d'un ~ (inversion des bits) ou d'un ++
(incrément) pour la tester à -1. C'est surtout pratique en assembleur, en
fait.
Je vois là un certain rapport avec le void* retourné par exemple par
malloc() (ou new() dans certaines conditions) : pour moi, c'est un semi
booléen, et donc je vais écrire if((ptr=malloc())) ou if(!(ptr=malloc())),
et ne pas me forcer à if((ptr=malloc())!=0) ou if((ptr=malloc())==0), mais
c'est personnel.
Pierre

Avatar
kanze
DINH Viêt Hoà wrote in message
news:...

Les profs de C++ pourraient se servir de cet exemple pour illustrer
les magnifiques méthodes d'obfuscation utilisées dans l'industrie
;-)


ça veut dire quoi "obfuscation" ?


C'est le substantif d'obfusquer :-).

Il n'est pas dans mon dictionnaire, est-ce un angliscisme ?


C'est probablement à partir de l'anglais qu'on l'a adopté en
informatique, mais c'est un latinisme au départ. En latin, obfuscare
signifie « rendre plus sombre ou plus ténébreux ». L'obfuscation est
donc le fait de rendre plus sombre ou plus ténébreux.

mon dictionnaire anglais-français internet ne veut pas le traduire.
Bref, j'en cherche la définition exacte.

Est-ce synonyme de "déroute" ?


Pas du tout. Je ne trouve pas un bon synonyme français. C'est d'ailleurs
peut-être pour ça qu'on l'a adopté. Un programme qui est obfusqué manque
de l'intelligibilité, mais le mot inintelligible manque l'aspect
intentionnel de obfuscation.

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16


Avatar
DINH Viêt Hoà

Après lecture en diagonale : des outils qui rendent incompréhensible le code
décompilé (ou le code source ?) s'il est impossible d'empêcher cette
décompilation. Par exemple, en remplaçant les noms par des noms improbables.
C'est peut-être le début d'un truc nouveau : l'Open Source Dégueu, ou
Inbitable Open Source (IOS !)..


pardon, tu as quelque chose contre l'Open Source ?

--
DINH V. Hoa,

etPan! - newsreader, mail user agent -- http://libetpan.sf.net/etpan

Avatar
DINH Viêt Hoà

Ceci dit, cette valeur de retour est assez pratique : une fois testée la
valeur 0 (WM_QUIT), il suffit d'un ~ (inversion des bits) ou d'un ++
(incrément) pour la tester à -1. C'est surtout pratique en assembleur, en
fait.


Oulà, je n'ai rien compris. C'est assez obfusqué (un nouveau mot tous
les jours) ton explication.

Je vois là un certain rapport avec le void* retourné par exemple par
malloc() (ou new() dans certaines conditions) : pour moi, c'est un semi
booléen, et donc je vais écrire if((ptr=malloc())) ou if(!(ptr=malloc())),
et ne pas me forcer à if((ptr=malloc())!=0) ou if((ptr=malloc())==0), mais


ce serait plutôt :

ptr = malloc(...);
if (ptr == NULL) {
^^^^
...
}

enfin on dérive sur le C là ... désolé.


quand à la valeur de retour de l'opérateur new, me semble-t-il qu'on n'a
pas besoin de la tester, soit une a une exception, soit il réussit.

Reste qu'avec ton exemple, je ne vois pas le rapport non plus.
Quand les booléens ne suffisent plus à communiquer un code de retour, en
général, on essaie d'utiliser un entier (ce qui est généralement utilisé
en C) ou autre (ou alors une exception si c'est en C++).

--
DINH V. Hoa,

etPan! - newsreader, mail user agent -- http://libetpan.sf.net/etpan

Avatar
Gabriel Dos Reis
"Pierre Maurette" <mmaauurreettttttee.ppiieerrrree@@ffrreeee.ffrr> writes:

| Je vois là un certain rapport avec le void* retourné par exemple par
| malloc() (ou new() dans certaines conditions) : pour moi, c'est un semi
| booléen, et donc je vais écrire if((ptr=malloc())) ou if(!(ptr=malloc())),

à chaque fois je vois ça, j'ai envie de jeter le programme par la
fenêtre -- C idiomatique ou non.

| et ne pas me forcer à if((ptr=malloc())!=0) ou if((ptr=malloc())==0), mais
| c'est personnel.

-- Gaby
Avatar
Ivan Vecerina
"Thomas Abbé" wrote in message
news:bqlrik$qkp$
| > BOOL GetMessage (/*je vous fais grâce des paramètres*/);
| >
| > Pas de problème non plus... sauf cette remarque :
| >
| > Note that the function return value can be TRUE, FALSE, or -1.
|
| ou est le probleme ? on distingue 3 cas !
| tant que c bien documente, il y a pas de prob...

C++ ou pas, George Boole, mathématicien britannique qui a
inventé la logique booléenne au 19ème siècle, a de quoi
se retourner dans sa tombe.

Si ce n'est pas une valeur booléenne, elle ne devrait pas
s'appeler BOOL. C'est tout.

Ivan
--
http://ivan.vecerina.com
Avatar
Alain Naigeon
"Loïc Joly" a écrit dans le message news:
bqmpod$lpi$
DINH Viêt Hoà wrote:



Les profs de C++ pourraient se servir de cet exemple pour illustrer
les magnifiques méthodes d'obfuscation utilisées dans l'industrie ;-)



ça veut dire quoi "obfuscation" ?

Il n'est pas dans mon dictionnaire, est-ce un angliscisme ?


Oui, de l'anglais obfuscate

Obfuscate: tr.v. -cated, -cating, -cates. 1. a. To render obscure.
b. To darken. 2. To confuse: his emotions obfuscated his judgment.
[LLat. obfuscare, to darken : ob(intensive) + Lat. fuscare,
to darken < fuscus, dark.] -obfuscation n. obfuscatory adj


Alors, mettons : "brouiller les pistes", même si l'on peut rêver plus court.

--

Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - - Strasbourg, France



Avatar
Cyrille Karmann
Thomas Abbé disait...
typedef int BOOL;
#define FALSE 0
#define TRUE 1
C'est limite, mais prévu à l'origine pour les compilateurs sans type
bool.
BOOL GetMessage (/*je vous fais grâce des paramètres*/);

Pas de problème non plus... sauf cette remarque :

Note that the function return value can be TRUE, FALSE, or -1.



ou est le probleme ? on distingue 3 cas !


Bon, on l'a dit: le problème, c'est d'appeller booléen un truc qui ne
l'est pas.

tant que c bien documente, il y a pas de prob...


Oui, mais justement...

1 : TRUE
0 : FALSE
-1: ERROR
BOOL GetMessage(
LPMSG lpMsg, // address of structure with message
HWND hWnd, // handle of window
UINT wMsgFilterMin, // first message
UINT wMsgFilterMax // last message
);
Return Values
If the function retrieves a message other than WM_QUIT, the return value is
nonzero.


-1 est nonzero aussi, donc celui qui lit la doc trop vite implémentera
un programme qui croira qu'il y a un message quand il y a une erreur...

If there is an error, the return value is -1. For example, the function
fails if hWnd is an invalid window handle or lpMsg is an invalid pointer. To
get extended error information, callGetLastError.


--
Cyrille
Euro 2004: Santini delenda est.


1 2 3 4 5