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 ;-)


--
;-)

4 réponses

3 4 5 6 7
Avatar
Pierre Maurette
"James Kanze" a écrit ...
"Pierre Maurette" <mmaauurreettttttee.ppiieerrrree@@ffrreeee.ffrr> writes:

|> "DINH Viêt Hoà" a écrit
|> [...]

|> > je préfère :
|> > if (a == c)

|> > à :

|> > if(a == c)
|> Vous ne préfèreriez pas :
|> if ( a == c )
|> ? ;-)

C'est ce que j'utilise, moi aussi.
[...]

Mais la même logique ferait mettre un espace et avant et après le
virgule, dans par exemple « f( a , b ) ».
En fait, ce n'est pas ce que j'utilise. Je chambrais (gentiment) la réponse

à la "schtroumpf grognon", en faisant la même chose.
J'ai des contraintes de lisibilité à l'impression, impression que je ne
maîtrise pas, donc de longueur de ligne, d'autant que j'utilise des noms
relativement long.
J'en arrive donc à des trucs un peu boiteux:
x = f(a, b);
Je réduit la tabulation à deux caractères. J'économise la première
indentation au niveau fonction :
int fonct(int a, int b)
{
a = 2 * b;
if(a == 0)
{
b = 12;:
}
return b;
}
Je mets le plus souvent les paramètres de fonctions (API Windows en
particulier) sur plusieurs lignes. A priori un par ligne, mais c'est parfois
limite : que faire avec ce genre de liste de paramètres (réalisé avec
trucages) :
NumErreur = lineOpen(hLineApp,
dwDeviceID,
&hLine,
0,
0,
NULL,
0,
0,
TapiVersion);
ou
NumErreur = lineOpen(hLineApp,
dwDeviceID,
&hLine,
0, 0, NULL, 0, 0,
TapiVersion);
Remarquez, ça n'empêchera pas le monde de tourner ...




|> [...]
|> > Je préfère :

|> > while (1) {

|> > A = f();
|> > if (A != NO_ERROR)
|> > break;

|> > // ...
|> > }
|> J'écris :

|> while(true) //quand ce n'est pas while(!FINI)
|> {
|> // ...
|> }

Dans les deux cas, on sort du milieu de la boucle. Ce n'est pas bien.
Effectivement.

Le monsieur m'avait précédemment dit qu'il préférait NULL à 0, alors moi, je
lui dit que je préfère true à 1. Je suis puéril ....
Une question : soit une boucle do....while, elle-même dans un try...catch,
le tout dans un try ... __finally. Dans la boucle, des appels API, test de
demande de fin de thread, gestion de la charge CPU, etc. Contrainte :
identifier la première cause de fin de boucle, donc la première erreur. Sous
Builder, c'est assez simple. Pour l'instant, je lance une exception une fois
sorti de la boucle. Dans ces conditions, l'exception perd beaucoup de son
intérêt. Le code se prête bien au lancement immédiat de l'exception
(paramétrée du type d'erreur). J'ai testé sans souci, mais ce genre d'appli
est par essence impossible à tester à 100%. Quelles sont les raisons
objectives de me priver de cette méthode. Je précise qu'il ne paut pas y
avoir de problème de libération.

Il fait un temps frais et splendide à Sète, le vie est belle, il était temps
....
Cordialement,
Pierre

Avatar
James Kanze
"Michel Michaud" writes:

|> Dans news:, James
|> >>> (j'ai préféré abandonner une version macro FAIRE_TOUJOURS).

|> > Je l'espère. Le langage est ce qu'il est, mais essayer de le
|> > changer au moyen des macros ne peut que préter à la
|> > confusion à la longue.

|> Bien sûr... Et c'est pourquoi il faut éviter NULL et utiliser 0.

NULL fait partie du langage.

--
James Kanze mailto:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93
Avatar
Michel Michaud
Dans news:, James
"Michel Michaud" writes:

Dans news:, James
(j'ai préféré abandonner une version macro FAIRE_TOUJOURS).



Je l'espère. Le langage est ce qu'il est, mais essayer de le
changer au moyen des macros ne peut que préter à la
confusion à la longue.


Bien sûr... Et c'est pourquoi il faut éviter NULL et utiliser 0.



NULL fait partie du langage.


Je n'en doute nullement, mais c'est une macro qui est interprété
différemment de ce qu'elle est, par nombre de personnes, ce qui
ressemble à ton « prêter à la confusion à la longue ». Après tout,
le langage est ce qu'il est : 0 ou NULL, ça choisit f(int) et non
pas f(int*).

Je ne voulais surtout pas repartir cette discussion sur NULL vs
0... (Tu as manqué mon :-) ?)

--
Michel Michaud
http://www.gdzid.com
FAQ de fr.comp.lang.c++ :
http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/






Avatar
kanze
"Michel Michaud" wrote in message
news:<rHKAb.1647$...
Dans news:, James
"Michel Michaud" writes:

Dans news:, James
(j'ai préféré abandonner une version macro FAIRE_TOUJOURS).



Je l'espère. Le langage est ce qu'il est, mais essayer de le
changer au moyen des macros ne peut que préter à la confusion à
la longue.


Bien sûr... Et c'est pourquoi il faut éviter NULL et utiliser 0.



NULL fait partie du langage.


Je n'en doute nullement, mais c'est une macro qui est interprété
différemment de ce qu'elle est, par nombre de personnes, ce qui
ressemble à ton « prêter à la confusion à la longue ». Après tout, le
langage est ce qu'il est : 0 ou NULL, ça choisit f(int) et non pas
f(int*).

Je ne voulais surtout pas repartir cette discussion sur NULL vs 0...
(Tu as manqué mon :-) ?)


C'est pourquoi je me suis pas lancer à discuter s'il faut utiliser NULL
ou s'il faut utiliser 0 -- malheureusement, ni l'un ni l'autre n'est
vraiment satisfaisant, et celui qu'on préfère dépendra sans doute de son
style de programmation (parmi d'autres choses).

Tout ce que je voulais dire, c'est qu'utiliser NULL n'est pas changer le
langage au moyen des macros, parce que NULL fait partie du langage. Pour
la reste, c'est un peu une question de style (ou des priorités, ou de je
ne sais pas quoi).

--
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







3 4 5 6 7