3450

C'est peut-être ce qui est arrivé à Theresa May ?
avatar

3451

grin
pourtant la reine lui avait donné l'accolade, mais je sais pas ce qu'elle en a fait tsss

3452

Ohohoh #pointvince#
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

3453

grin
avatar

3454

Zerosquare (./3446) :
Perso il n'y a qu'un seul cas où je ne les mets pas systématiquement : une seule instruction, sur la même ligne, sans else. Par exemple if (!machin()) return false;. Je trouve que ça allège un peu sans introduire de risque significatif.

(je préempte la remarque probable de Ximoon sur le return : c'est pas le sujet ici tongue)
Bien vu grin Mais ce n'est que l'une des trois choses qui me chiffonnent sur cette ligne de code embarrassed
avatar
Que cache le pays des Dieux ? - Forum Ghibli - Forum Littéraire

La fin d'un monde souillé est venue. L'oiseau blanc plane dans le ciel annonçant le début d'une longue ère de purification. Détachons-nous à jamais de notre vie dans ce monde de souffrance. Ô toi l'oiseau blanc, l'être vêtu de bleu, guide nous vers ce monde de pureté. - Sutra originel dork.

3455

Je tente :
- le !
- la récupération de la valeur dans une variable

3456

Voila la solution ultime

something a, b, ret; a = machin(); b = 0; if ( (a == a) && /* First check that equality is working */ (b != 1) && /* Then check if non-equality is working */ (a) ) { /* Nothing to do here, but just do it anyway */ b = 0; } else { b = 1; } if ((b == 1) && (!a)) { goto exit; } [...] exit: ret = true; if (b == 1) { ret = false; } if (a) { ret = true; fatal("b != 1 check error"); } if ((!a) && (b == 1)) { ret = false; } /* 01/05/1996: Quick hack, something went wrong in the calling function so sending false for now */ // return true; return false;
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

3457

trilove laught

3458

A propos de connerie, je viens d'en croiser une bien belle dans la SDL :
https://wiki.libsdl.org/SDL_WaitEventTimeout
Returns 1 on success or 0 if there was an error while waiting for events; call SDL_GetError() for more information. This also returns 0 if the timeout elapsed without an event arriving.
Donc si t'as 1, ça a marché.
Si t'as 0, t'as une erreur. Ou pas.

3459

Mouais, à la rigueur le timeout qui arrive à échéance c'est un genre d'erreur %o (mais bon, s'ils avaient renvoyé 2, ça n'aurait pas été pas plus mal, oui grin)

3460

Godzil > rotfl

Folco > je suppose que l'appel de SDL_GetError() permet de distinguer les deux cas, même si ce n'est pas dit clairement. Mais ouais, c'est moche. Y'a quelques fonctions dans l'API Windows qui sont mal fichues de cette façon.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

3461

Disont qu'un Timeout est dans la majorité des cas a considérer comme une erreur, donc si tu recois 0, tu verifie si il y a eu une erreur, si non c'est "juste" un timeout, si oui, tu traite les erreurs..

Dison que c'est aussi pour accommoder avec les cas les plus courants:

- Un événement
- Timeout

Le cas exceptionnel (et qui est proche du Timeout) est le cas d'erreur. Comme il n'existe pas de trilleens (bit a 3 état plutot que 2) il fallais bien melanger deux sur l'etat qui est le plus proche. Melanger "Pas de timeout + Erreur" aurais été vraiment moche

Ce qui veux dire que pour:

Donc si t'as 1, ça a marché.
Si t'as 0, t'as une erreur. Ou pas.
Il faut plutot en fait lire


Donc si t'as 1, ça a marché.
Si t'as 0, il y a un timeout, ou peut etre une erreur.

while(1) { ret = SDL_WaitEventTimeout(bla); if ( ret == 1 ) { while(SDL_WeHaveSomeEvent()) { SDL_Event event = SDL_PopEvent(); /* Faire quelque chose avec event */ SDL_DoSomethingWithThatRandomEvent(event); } } else { /* Ok alors on a probablement un timeout */ sdlerr = SDL_GetError() if (unlikely(sdlerr)) { /* Oups */ SDL_Panic("OUPS - Fallais pas marcher sur le clavier les gars!"); SDL_Exit(-42); } /* Faire si besoin est ce qu'on a faire en cas de timeout */ SDL_AnnoyUser("Vous etes vraiment lent..."); } }
C'est un code assez courant a vrai dire

(unlikely est une macro souvent définie avec des projets utilisant GCC pour indiquer au compilateur que ce test a normalement peu de chance de reussir donc de traiter le code qui est derriere comme peux important question optimisation de branchement, donc ce n'est pas grave si aller l'executer est couteux en cycles)
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

3462

Oui je comprends bien tout ça, mais à part décortiquer une chaine de caractère qui peut changer de version en version (SDL_GetError()), je trouve que c'est très con, surtout quand on renvoie un int et pas un booléen.
Car dans la pratique, il n'y a aucun moyen de savoir si on a pas une erreur dans la récupération d'évènement.
Bon en vrai, on s'en fout un peu d'une hypothétique erreur à ce niveau-là, mais quand même quoi embarrassed

3463

L'erreur, et grossiere la pour le coup, c'est qu'il n'y a pas moyen de recuperer l'erreur sous forme de nombre o_O


Le fait que WaitEventTimeout retourne 0 ou 1, la je ne suis pas d'accord, c'est mieux ainsi, car 1 etant "ok", -1, -2, -3, ... INT_MIN et 2, 3, 4, ..., INT_MAX vont valider exactement comme pour 1, donc c'est dans le cas ou tout va bien que tu va devoir a chaque fois vérifier qu'il n'y a pas d'erreur. Ca peut etre tres pénalisant.

Oh mon dieu, le code de SDL_Error est super horrible:

http://hg.libsdl.org/SDL/file/4116bf232fe7/src/SDL_error.c
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

3464

Je pensais que SDL_GetError(), c'était du même genre que GetLastError() de Windows, une fonction qui renvoie une valeur numérique... là effectivement c'est tellement mal fichu et mal implémenté qu'on dirait du dév web tongue
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

3465

Hey non, en PHP la plupart des API ont une méthode getError et une getErrNumber ou assimilable hein embarrassed
avatar

3466

... retournant void toutes les deux ?

3467

Non int avec un « return 42 » dans le code de la fonction avec le commentaire « 02/07/1987: to finish later »
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

3468

grin

3469

Non, getErrNumber retourne null s'il n'y a pas d'erreur, zéro si l'opération a échoué, false quand il y a eu une erreur dans la remontée de l'erreur, et une chaîne vide si la méthode a été appelée alors qu'aucune opération n'a été réalisée auparavant.
(ce qui n'ont jamais fait de PHP ne peuvent pas comprendre)
avatar

3470

grin
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

3471

(ceux qui en ont fait non plus, d'ailleurs grin)

3472

(c'est presque pas faux :3)
avatar

3473

Tu pourrais prévenir quand tu postes des trucs pareils, j'ai failli dégueuler avant la fin du post grin

3474

Je ne suis pas sûr que tu aies déjà fait du PHP, mais le côté humoristique de mon post est qu'en PHP, l'opérateur de comparaison classique ("==") ne fait pas la différence entre tous ces retours qui sont équivalents. Il faut utiliser l'opérateur de comparaison stricte (qui n'hésitait pas aux débuts de PHP, il fallait faire un test de valeur, doublé d'un test de type). Ce qui fait qu'il y a encore tout un tas de personnes qui se trompent d'opérateur de comparaison et ne comprennent pas pourquoi ça peut merder (typiquement, la méthode qui retourne la longueur d'une chaîne peut renvoyer 0 si la chaîne est vide, ou false en cas d'erreur ; si tu utilises ==, tu risques d'évaluer une mauvaise valeur, il faut utiliser === ).
avatar

3475

Et JS a le même gros défaut avec == et ===...
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

3476

Pour être plus sûr j'utilise souvent ====

3477

Moi j'aime bien l'opérateur bitaire... OO=====o
avatar

3478

Moi aussi je l'utilise souvent, mais il a un défaut : il donne des résultats imprévisibles quand tu compares deux bites (genre une grosse peut équivaloir une plus petite mais plus aiguisée ou plus vigoureuse, etc.). On dit de par cette propriété mathématique que c'est un opérateur "arbitaire".
avatar
Highway Runners, mon jeu de racing à la Outrun qu'il est sorti le 14 décembre 2016 ! N'hésitez pas à me soutenir :)

https://itunes.apple.com/us/app/highway-runners/id964932741

3479

(non mais.... grin)
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

3480

Bah, c'est le bon topic grin